SlideShare ist ein Scribd-Unternehmen logo
1 von 204
Downloaden Sie, um offline zu lesen
WAMP as a platform
for composite SOA
applications and its
implementation on Lua
Konstantin Burkalev
@KSDaemon
Few	words	about	me…
2
• Software	architect	
• 15+	years	in	IT	
• Author	and	host	of	podcasts:	SDCast	&	RadioJS	
• Active	member	of	WAMP	protocol	development	group	
• Author	and	maintainer	of	a	few	WAMP	implementations,											
some	of	them	are	written	in	Lua
Talk	plan
Example	of	system	using	WAMP	
What	is	WAMP	and	how	it	works	
WAMP	as	basis	for	SOA	applications	
Application	fields	
WAMP	client	in	Lua	
WAMP	router	in	Nginx/Lua
3
Task:	Smart	Home	System
4
Living	room
Task:	Smart	Home	System
4
Living	room
Task:	Smart	Home	System
4
Living	room
Task:	Smart	Home	System
4
Bath	room
Living	room
Task:	Smart	Home	System
4
Bath	room
Living	room
Task:	Smart	Home	System
4
Bath	room
Living	room
Task:	Smart	Home	System
4
Bath	room
Living	room
Task:	Smart	Home	System
4
User
Bath	room
Living	room
Task:	Smart	Home	System
4
User
The	temperature	sensor	detects	
the	temperature	raise
Bath	room
Living	room
Task:	Smart	Home	System
4
User
The	client	is	notified	
Logged	in	database
Bath	room
Living	room
Task:	Smart	Home	System
4
User
The	client	is	notified	
Logged	in	database
Bath	room
Living	room
Task:	Smart	Home	System
4
User
The	system	turns	on	air	conditioning
Bath	room
Living	room
Task:	Smart	Home	System
4
User
The	temperature	in	the	room	decreases
Bath	room
Living	room
Task:	Smart	Home	System
4
User
Bath	room
Living	room
Task:	Smart	Home	System
4
User
Bath	room
Living	room
Task:	Smart	Home	System
4
User
The	system	turns	off	the	air	conditioning
Bath	room
Living	room
Task:	Smart	Home	System
4
User
The	system	turns	off	the	air	conditioning
Bath	room
Living	room
Task:	Smart	Home	System
4
User
The	humidity	in	the	bathroom	rises
Bath	room
Living	room
Task:	Smart	Home	System
4
User
The	client	is	notified	
Logged	in	database
Bath	room
Living	room
Task:	Smart	Home	System
4
User
The	client	is	notified	
Logged	in	database
Bath	room
Living	room
Task:	Smart	Home	System
4
User
The	system	turns	on	a	fan
Bath	room
Living	room
Task:	Smart	Home	System
4
User
The	system	turns	on	a	fan
Bath	room
Living	room
Task:	Smart	Home	System
4
User
The	humidity	in	the	bathroom	drops
Bath	room
Living	room
Task:	Smart	Home	System
4
User
Bath	room
Living	room
Task:	Smart	Home	System
4
User
Bath	room
Living	room
Task:	Smart	Home	System
4
User
The	system	turns	off	the	fan
Bath	room
Living	room
Task:	Smart	Home	System
4
User
The	system	turns	off	the	fan
Bath	room
Living	room
Task:	Smart	Home	System
4
User
Bath	room
Living	room
Task:	Smart	Home	System
4
User
Admin
Admin	configures	threshold	values
Bath	room
Living	room
Task:	Smart	Home	System
4
User
Admin
Admin	searches	new	devices
Bath	room
Living	room
Task:	Smart	Home	System
4
User
Admin
The	system	informs	about		
found	devices
Bath	room
Living	room
Task:	Smart	Home	System
4
User
Admin
The	system	informs	about		
found	devices
Bath	room
Living	room
Task:	Smart	Home	System
4
User
Admin
Bath	room
Living	room
Task:	Smart	Home	System
4
User
Admin
What	is	WAMP
5
What	is	WAMP
• It	stands	for	"Web	Application	Messaging	Protocol"
5
What	is	WAMP
• It	stands	for	"Web	Application	Messaging	Protocol"
• Is	intended	for	communication	between	software	components	in	
near	real-time
5
What	is	WAMP
• It	stands	for	"Web	Application	Messaging	Protocol"
• Is	intended	for	communication	between	software	components	in	
near	real-time
• Provides	two	mechanisms:	
• Publish/Subscribe	(PubSub)	
• Remote	Procedure	Calls	(RPC)
5
What	is	WAMP
• It	stands	for	"Web	Application	Messaging	Protocol"
• Is	intended	for	communication	between	software	components	in	
near	real-time
• Provides	two	mechanisms:	
• Publish/Subscribe	(PubSub)	
• Remote	Procedure	Calls	(RPC)
• Bi-directional,	ordered
5
What	is	WAMP
• It	stands	for	"Web	Application	Messaging	Protocol"
• Is	intended	for	communication	between	software	components	in	
near	real-time
• Provides	two	mechanisms:	
• Publish/Subscribe	(PubSub)	
• Remote	Procedure	Calls	(RPC)
• Bi-directional,	ordered
• For	communication	between	clients	is	required	WAMP-router
5
Why	WAMP?
6
Why	WAMP?
• Open	specification
6
Why	WAMP?
• Open	specification
• Thoughtful	Publish	/	Subscribe
6
Why	WAMP?
• Open	specification
• Thoughtful	Publish	/	Subscribe
• Thoughtful	Remote	Procedure	Calls
6
Why	WAMP?
• Open	specification
• Thoughtful	Publish	/	Subscribe
• Thoughtful	Remote	Procedure	Calls
• Message	routing
6
Why	WAMP?
• Open	specification
• Thoughtful	Publish	/	Subscribe
• Thoughtful	Remote	Procedure	Calls
• Message	routing
• Cross-platform
6
Why	WAMP?
• Open	specification
• Thoughtful	Publish	/	Subscribe
• Thoughtful	Remote	Procedure	Calls
• Message	routing
• Cross-platform
• There	are	implementations	in	more	than	15	languages
6
WAMP	alternatives
7
Technology PubSub RPC
Routed
RPC
Web native
Cross
Language
Open
Standard
WAMP ✔ ✔ ✔ ✔ ✔ ✔
AJAX - ✔ - ✔ ✔ -
AMQP ✔ (✔) - - ✔ ✔
Java JMS ✔ - - - - ✔
JSON-RPC - ✔ - ✔ ✔ ✔
MQTT ✔ - - - ✔ ✔
REST - ✔ - ✔ ✔ -
SOAP - ✔ - ✔ ✔ ✔
socket.io ✔ - - ✔ - -
XMPP ✔ - - ✔ ✔ ✔
ZMQ ✔ - - - ✔ -
WAMP:	message	examples
8
WAMP	architecture
9
WAMP	architecture
10
Client.		
Can	provide	
or	consume	
resources	such	as	
subscriptions	and	RPC.
WAMP	architecture
11
Router.		
Deals	with	
authorization	and		
routing		
messages		
between	clients.
WAMP	architecture
12
Peer.		
Can	be	a	client	
or	a	router,	
must	have	
at	least	one	role.
WAMP	architecture
13
Role.		
Defines	
features	of	the	node.	
There	are	4	client	roles	
and	2	roles	of	the	router.
WAMP	architecture
14
Session.		
It	is	necessary	for	
identification	and	
authorization	of	clients,	
announce	the	roles		
of	nodes.
WAMP	architecture
15
Realm.		
domain,	namespace,	
single	space	
within	which	
resources	
and	message	routing		
takes	place.
WAMP	architecture
16
Transport.		
You	can	use:		
Websocket,	Raw	TCP,		
Unix	sockets	and	even		
HTTP	Long	poll.
WAMP	architecture
17
Serializer.		
All	messages	are	
serialized	using		
JSON/MessagePack/	
CBOR.
message
WAMP	architecture
18
Resource		
identifiers,	URI.	
Required	for	
topics,	procedures	
and	errors.	
For	example:	
Topic:	«sensor.events»	
RPC:	«discover.devices»
message
Basic	WAMP	concepts
19
Basic	WAMP	concepts
• Client.	Can	provide	or	consume	resources,	such	as	subscriptions	and	RPC.
• Router.	Deals	with	authorization	and	message	routing	between	clients.
• Peer.	Can	be	a	client	or	a	router,	must	have	at	least	one	role.
• Role.	Determines	the	capabilities	of	the	node.	There	are	4	client	roles	and	2	router	roles.
• Session.	It	is	necessary	to	identify	and	authorize	clients,	announce	the	role	of	nodes.
• Realm.	Domain,	namespace,	within	which	messages	are	routed.
• Transport.	You	can	use:	WebSockets,	Raw	TCP,	Unix	sockets	and	even	HTTP	Long	poll.
• Serializer.	Messages	are	serialized	using	JSON	/	MessagePack	/	CBOR	/	etc.
• Resource	identifiers,	URIs.	Required	for	topics,	procedures	and	errors.
19
WAMP:	Features
20
WAMP:	Features
• Basic	profile:	basic	features	of	RPC	and	PubSub
20
WAMP:	Features
• Basic	profile:	basic	features	of	RPC	and	PubSub
• Advanced	profile:
20
WAMP:	Features
• Basic	profile:	basic	features	of	RPC	and	PubSub
• Advanced	profile:
• Challenge-Response	Authentication
• Progressive	call	results,	call	timeout,	call	canceling
• Publication	/	call	trust	levels
• Caller	/	publisher	identification
• Pattern	based	registration	/	subscription
• Shared	registration,	sharded	registration	/	subscription
• Event	history
• Meta	API	&	Procedure	/	topic	reflection
20
WAMP:	session	establishment
21
Client Router
Realm
WAMP:	session	establishment
21
HELLO
Client Router
Realm
[1,	"homeapp",	{	"roles":	{	"publisher":	{},	"subscriber":	{}	}	}]
WAMP:	session	establishment
21
HELLO
WELCOME
Client Router
Realm
[2,	9129137332,	{	"roles":	{	"broker":	{}	}	}]
WAMP:	session	establishment
21
HELLO
WELCOME
ABORT
Client Router
Realm
[3,	{"message":	"The	realm	does	not	exist."},	"wamp.error.no_such_realm"]
WAMP:	session	establishment
21
HELLO
WELCOME
GOODBYE (init by client)
ABORT
Client Router
Realm
[6,	{"message":	"The	host	is	shutting	down	now."},	"wamp.error.system_shutdown"]
WAMP:	session	establishment
21
HELLO
WELCOME
GOODBYE (init by client)
ABORT
GOODBYE
Client Router
Realm
[6,	{},	"wamp.error.goodbye_and_out"]
WAMP:	session	establishment
21
HELLO
WELCOME
GOODBYE (init by client)
ABORT
GOODBYE
GOODBYE (init by router)
Client Router
Realm
[6,	{},	"wamp.error.close_realm"]
WAMP:	session	establishment
21
HELLO
WELCOME
GOODBYE (init by client)
ABORT
GOODBYE
GOODBYE
GOODBYE (init by router)
Client Router
Realm
[6,	{},	"wamp.error.goodbye_and_out"]
WAMP:	session	establishment
21
HELLO
WELCOME
GOODBYE (init by client)
ABORT
GOODBYE
GOODBYE
GOODBYE (init by router)
Client Router
Realm
WAMP:	Publish	/	Subscribe
22
Publisher Broker Subscriber
Realm
WAMP:	Publish	/	Subscribe
22
SUBSCRIBE
Publisher Broker Subscriber
Realm
[32,	713845233,	{},	"sensor.events"]
WAMP:	Publish	/	Subscribe
22
SUBSCRIBE
SUBSCRIBED
Publisher Broker Subscriber
Realm
	[33,	713845233,	5512315355]
WAMP:	Publish	/	Subscribe
22
SUBSCRIBE
SUBSCRIBED
ERROR
Publisher Broker Subscriber
Realm
[8,	32,	713845233,	{},	"wamp.error.not_authorized"]
WAMP:	Publish	/	Subscribe
22
SUBSCRIBE
SUBSCRIBED
ERROR
PUBLISH
Publisher Broker Subscriber
Realm
[16,	239714735,	{},	"sensor.events",	[],	{"sensorId	":	25,	"temp":	27}]
WAMP:	Publish	/	Subscribe
22
SUBSCRIBE
SUBSCRIBED
ERROR
PUBLISH
PUBLISHED
Publisher Broker Subscriber
Realm
[17,	239714735,	4429313566]
WAMP:	Publish	/	Subscribe
22
SUBSCRIBE
SUBSCRIBED
ERROR
PUBLISH
PUBLISHED
ERROR
Publisher Broker Subscriber
Realm
[8,	16,	239714735,	{},	"wamp.error.not_authorized"]
WAMP:	Publish	/	Subscribe
22
SUBSCRIBE
SUBSCRIBED
ERROR
PUBLISH
PUBLISHED
ERROR
EVENT
Publisher Broker Subscriber
Realm
[36,	5512315355,	4429313566,	{},	[],	{"sensorId	":	25,	"temp":	27}]
WAMP:	Publish	/	Subscribe
22
SUBSCRIBE
SUBSCRIBED
UNSUBSCRIBE
ERROR
PUBLISH
PUBLISHED
ERROR
EVENT
Publisher Broker Subscriber
Realm
[34,	85346237,	5512315355]
WAMP:	Publish	/	Subscribe
22
SUBSCRIBE
SUBSCRIBED
UNSUBSCRIBE
UNSUBSCRIBED
ERROR
PUBLISH
PUBLISHED
ERROR
EVENT
Publisher Broker Subscriber
Realm
[35,	85346237]
WAMP:	Publish	/	Subscribe
22
SUBSCRIBE
SUBSCRIBED
UNSUBSCRIBE
UNSUBSCRIBED
ERROR
ERROR
PUBLISH
PUBLISHED
ERROR
EVENT
Publisher Broker Subscriber
Realm
[8,	34,	85346237,	{},	"wamp.error.no_such_subscription"]
WAMP:	Publish	/	Subscribe
22
SUBSCRIBE
SUBSCRIBED
UNSUBSCRIBE
UNSUBSCRIBED
ERROR
ERROR
PUBLISH
PUBLISHED
ERROR
EVENT
Publisher Broker Subscriber
Realm
WAMP:	Remote	Procedure	Calls
23
Caller Dealer Callee
Realm
WAMP:	Remote	Procedure	Calls
23
Caller Dealer Callee
REGISTERRealm
[64,	25349185,	{},	"dcs.fan.control"]
WAMP:	Remote	Procedure	Calls
23
Caller Dealer Callee
REGISTER
REGISTERED
Realm
[65,	25349185,	2103333224]
WAMP:	Remote	Procedure	Calls
23
Caller Dealer Callee
REGISTER
REGISTERED
ERROR
Realm
[8,	64,	25349185,	{},	"wamp.error.procedure_already_exists"]
WAMP:	Remote	Procedure	Calls
23
Caller Dealer Callee
REGISTER
REGISTERED
ERROR
CALL
Realm
[48,	7814135,	{},	"dcs.fan.control",	[true]]
WAMP:	Remote	Procedure	Calls
23
Caller Dealer Callee
REGISTER
REGISTERED
ERROR
CALL
INVOCATION
Realm
[68,	6131533,	9823528,	{},	[true]]
WAMP:	Remote	Procedure	Calls
23
Caller Dealer Callee
REGISTER
REGISTERED
ERROR
CALL
INVOCATION
YIELD
Realm
[70,	6131533,	{}]
WAMP:	Remote	Procedure	Calls
23
Caller Dealer Callee
REGISTER
REGISTERED
ERROR
CALL
RESULT
INVOCATION
YIELD
Realm
[50,	7814135,	{}]
WAMP:	Remote	Procedure	Calls
23
Caller Dealer Callee
REGISTER
REGISTERED
ERROR
CALL
RESULT
INVOCATION
YIELD
ERROR
Realm
[8,	68,	6131533,	{},	"homeapp.error.hardware_not_found"]
WAMP:	Remote	Procedure	Calls
23
Caller Dealer Callee
REGISTER
REGISTERED
ERROR
CALL
RESULT
INVOCATION
YIELD
ERROR
ERROR
Realm
[8,	48,	7814135,	{},	"homeapp.error.hardware_not_found"]
WAMP:	Remote	Procedure	Calls
23
Caller Dealer Callee
REGISTER
REGISTERED
UNREGISTER
ERROR
CALL
RESULT
INVOCATION
YIELD
ERROR
ERROR
Realm
[66,	788923562,	2103333224]
WAMP:	Remote	Procedure	Calls
23
Caller Dealer Callee
REGISTER
REGISTERED
UNREGISTER
UNREGISTERED
ERROR
CALL
RESULT
INVOCATION
YIELD
ERROR
ERROR
Realm
[67,	788923562]
WAMP:	Remote	Procedure	Calls
23
Caller Dealer Callee
REGISTER
REGISTERED
UNREGISTER
UNREGISTERED
ERROR
ERROR
CALL
RESULT
INVOCATION
YIELD
ERROR
ERROR
Realm
[8,	66,	788923562,	{},	"wamp.error.no_such_registration"]
WAMP:	Remote	Procedure	Calls
23
Caller Dealer Callee
REGISTER
REGISTERED
UNREGISTER
UNREGISTERED
ERROR
ERROR
CALL
RESULT
INVOCATION
YIELD
ERROR
ERROR
Realm
WAMP	as	a	basis	for	SOA	applications
24
WAMP	as	a	basis	for	SOA	applications
Distributed	architecture
24
WAMP	as	a	basis	for	SOA	applications
Distributed	architecture
Loose	coupling	of	components
24
WAMP	as	a	basis	for	SOA	applications
Distributed	architecture
Loose	coupling	of	components
A	simple	and	intuitive	interface	for	interaction
24
WAMP	as	a	basis	for	SOA	applications
Distributed	architecture
Loose	coupling	of	components
A	simple	and	intuitive	interface	for	interaction
Unified	Routing
24
WAMP	as	a	basis	for	SOA	applications
Distributed	architecture
Loose	coupling	of	components
A	simple	and	intuitive	interface	for	interaction
Unified	Routing
Independence	from	programming	language
24
WAMP	as	a	basis	for	SOA	applications
Distributed	architecture
Loose	coupling	of	components
A	simple	and	intuitive	interface	for	interaction
Unified	Routing
Independence	from	programming	language
Re-usability	of	components
24
WAMP	as	a	basis	for	SOA	applications
Distributed	architecture
Loose	coupling	of	components
A	simple	and	intuitive	interface	for	interaction
Unified	Routing
Independence	from	programming	language
Re-usability	of	components
WAMP	satisfies	the	requirements	of	SOA
24
WAMP	as	ESB
25
WAMP	
Router
Service	
Providers
Service	
Providers
Service	
Providers
Service	
Providers
Service	
Providers
Consumers
Consumers
Consumers
Consumers
Consumers
call	RPC
Subscribe	to	topics
Register	RPC
Publish	events
Subscribe	to	topics
Publish	events
Сервер
Сервер
Server
WAMP	in	heterogeneous	systems
26
WAMP	
Router
File	
uploader	
(python)
Web	
Client	
(js)
Backoffice	
Client	
(c#)
Video	
processing	
(c++)
Image	
processing	
(go)
Logger	
(ruby)
External	
API	
Gateway
Client	
REST	API	
(nodejs)
Mobile	
Client	
(swift)
Backoffice	
REST	API	
(Java)
DB
Mobile	
Client	
(java)
Realm
Realm
Realm
Сервер
Сервер
Server
WAMP	Application	fields
27
WAMP	Application	fields
27
Distributed	applications	with	a	large	number	of	services
WAMP	Application	fields
27
Distributed	applications	with	a	large	number	of	services
Smart	homes,	Smart	cities,	Internet	of	things	in	General
WAMP	Application	fields
27
Distributed	applications	with	a	large	number	of	services
Smart	homes,	Smart	cities,	Internet	of	things	in	General
Systems	with	long-running	processes
WAMP	Application	fields
27
Distributed	applications	with	a	large	number	of	services
Smart	homes,	Smart	cities,	Internet	of	things	in	General
Systems	with	long-running	processes
Easy	modern	alternative	to	XMPP,	XMLRPC
WAMP	Application	fields
27
Distributed	applications	with	a	large	number	of	services
Smart	homes,	Smart	cities,	Internet	of	things	in	General
Systems	with	long-running	processes
Easy	modern	alternative	to	XMPP,	XMLRPC
Network	multiplayer	games
WAMP:	real	projects
28
WAMP:	real	projects
• Kadecot	API	Server.	Sony	Computer	Science	Laboratories
28
WAMP:	real	projects
• Kadecot	API	Server.	Sony	Computer	Science	Laboratories
• ParaView.	Parallel	Data	Analysis	and	Visualization	Application,	Kitware
28
WAMP:	real	projects
• Kadecot	API	Server.	Sony	Computer	Science	Laboratories
• ParaView.	Parallel	Data	Analysis	and	Visualization	Application,	Kitware
• Record.Evolution.	Data-warehouse	and	Business	Intelligence
28
WAMP:	real	projects
• Kadecot	API	Server.	Sony	Computer	Science	Laboratories
• ParaView.	Parallel	Data	Analysis	and	Visualization	Application,	Kitware
• Record.Evolution.	Data-warehouse	and	Business	Intelligence
• SmartME	smart	city	project.	MDS	Lab	at	the	University	of	Messina
28
WAMP:	real	projects
• Kadecot	API	Server.	Sony	Computer	Science	Laboratories
• ParaView.	Parallel	Data	Analysis	and	Visualization	Application,	Kitware
• Record.Evolution.	Data-warehouse	and	Business	Intelligence
• SmartME	smart	city	project.	MDS	Lab	at	the	University	of	Messina
• ButterflyDNS.	Web	UI	frontend	for	BIND	DLZ
• Gollard	VISION	Server	Management	Subsystem
28
Health	monitor
Nginx
Server	Management	Subsystem
29
WAMP	
Router
Admin	
App	
(c#)
Shaman
RPC:	set.network
RPC:	get.network Publish:	status.change
RPC:	get.status
RPC:	get.time
RPC:	set.time
Loowy:	WAMP	client	in	Lua
30
Loowy:	WAMP	client	in	Lua
30
• Works	in	Lua/Luajit	environment	on	top	of	lua-ev
Loowy:	WAMP	client	in	Lua
30
• Works	in	Lua/Luajit	environment	on	top	of	lua-ev
• Supports	JSON	and	Msgpack	serializers
Loowy:	WAMP	client	in	Lua
30
• Works	in	Lua/Luajit	environment	on	top	of	lua-ev
• Supports	JSON	and	Msgpack	serializers
• Supports	a	number	of	features	from	Advanced	Profile
Loowy:	WAMP	client	in	Lua
30
• Works	in	Lua/Luajit	environment	on	top	of	lua-ev
• Supports	JSON	and	Msgpack	serializers
• Supports	a	number	of	features	from	Advanced	Profile
• Automatic	reconnection	and	re-subscription
Loowy:	WAMP	client	in	Lua
30
• Works	in	Lua/Luajit	environment	on	top	of	lua-ev
• Supports	JSON	and	Msgpack	serializers
• Supports	a	number	of	features	from	Advanced	Profile
• Automatic	reconnection	and	re-subscription
• TODO:	Raw	socket	transport
• TODO:	Meta	API
• TODO:	Challenge-Response	Authorization	(WAMP-CRA)
• TODO:	work	on	the	basis	of	coroutines
Loowy:	api	calls	examples
31
client = loowy.new("ws://localhost/ws/", { realm = "gv" })
client:publish('sensor.events', { sensorId = 12, temperature = 27})
client:subscribe('sensor.events', function(event)
-- process received event
end)
client:call('dcs.fan.control', true, {
onSuccess = function()
-- fan turned on successfully
end,
onError = function(err)
-- error occurred
end
})
Loowy:	Technology	stack
32
Loowy:	Technology	stack
32
• Lua	5.1+,	Luajit	2.0
• lua-websockets	(which	uses	luasocket	under	the	hood)
• lua-ev
• lua-rapidjson
• lua-MessagePack	(optional)
Wiola:	WAMP	router	in	Lua
33
Wiola:	WAMP	router	in	Lua
• Works	on	top	of	Nginx/Lua	module
33
Wiola:	WAMP	router	in	Lua
• Works	on	top	of	Nginx/Lua	module
• Uses	Redis	for	runtime	storage
33
Wiola:	WAMP	router	in	Lua
• Works	on	top	of	Nginx/Lua	module
• Uses	Redis	for	runtime	storage
• Supports	JSON	and	Msgpack	serializers
33
Wiola:	WAMP	router	in	Lua
• Works	on	top	of	Nginx/Lua	module
• Uses	Redis	for	runtime	storage
• Supports	JSON	and	Msgpack	serializers
• Supports	a	number	of	features	from	Advanced	Profile
33
Wiola:	WAMP	router	in	Lua
• Works	on	top	of	Nginx/Lua	module
• Uses	Redis	for	runtime	storage
• Supports	JSON	and	Msgpack	serializers
• Supports	a	number	of	features	from	Advanced	Profile
• TODO:	Raw	socket	transport
• TODO:	Meta	API
• TODO:	lua-resty-postgres
33
Wiola:	Technology	stack
34
Wiola:	Technology	stack
34
• Nginx	or	OpenResty,	simply	put	lua-nginx-module
• lua-resty-websocket
• lua-resty-redis
• Redis	Server
• lua-rapidjson
• lua-resty-hmac	(optional,	is	required	for	WAMP-CRA)
• lua-MessagePack	(optional)
Wiola:	Nginx	config
35
location /ws/ {
set $wiola_socket_timeout 10;
set $wiola_max_payload_len 65535;
lua_check_client_abort on;
header_filter_by_lua_file /lib/wiola/headers.lua;
content_by_lua_file /lib/wiola/handler.lua;
}
Nginx
Wiola:	Common	scheme
36
Web	
Client
init_by_lua
headers_filter_by_lua
content_by_lua
Redis	
Server
Wiola:	JSON	caveats	and	limitations
37
Wiola:	JSON	caveats	and	limitations
• cJSON
37
Wiola:	JSON	caveats	and	limitations
• cJSON
• you	cannot	specify	how	to	serialize	empty	tables
37
Wiola:	JSON	caveats	and	limitations
• cJSON
• you	cannot	specify	how	to	serialize	empty	tables
• lua-resty-libcjson
37
Wiola:	JSON	caveats	and	limitations
• cJSON
• you	cannot	specify	how	to	serialize	empty	tables
• lua-resty-libcjson
• not	able	to	work	with	large	numbers	(int	>	32bit)
37
Wiola:	JSON	caveats	and	limitations
• cJSON
• you	cannot	specify	how	to	serialize	empty	tables
• lua-resty-libcjson
• not	able	to	work	with	large	numbers	(int	>	32bit)
lua-rapidjson
37
Wiola:	JSON	caveats	and	limitations
• cJSON
• you	cannot	specify	how	to	serialize	empty	tables
• lua-resty-libcjson
• not	able	to	work	with	large	numbers	(int	>	32bit)
lua-rapidjson
• So	far,	no	new	problems	have	been	found	:)
37
Wiola:	Runtime	storage	options
38
Wiola:	Runtime	storage	options
38
• Global	variables	in	memory
Wiola:	Runtime	storage	options
38
• Global	variables	in	memory
• are	created	every	time	on	request	handler
Wiola:	Runtime	storage	options
38
• Global	variables	in	memory
• are	created	every	time	on	request	handler
• problems	with	concurrent	requests
Wiola:	Runtime	storage	options
38
• Global	variables	in	memory
• are	created	every	time	on	request	handler
• problems	with	concurrent	requests
• Module	variables	loaded	in	init_by_lua
Wiola:	Runtime	storage	options
38
• Global	variables	in	memory
• are	created	every	time	on	request	handler
• problems	with	concurrent	requests
• Module	variables	loaded	in	init_by_lua
• You	can	read	in	all	workers
Wiola:	Runtime	storage	options
38
• Global	variables	in	memory
• are	created	every	time	on	request	handler
• problems	with	concurrent	requests
• Module	variables	loaded	in	init_by_lua
• You	can	read	in	all	workers
• But	the	write,	thanks	to	CoW,	will	create	a	copy	of	the	module	for	the	VM
Wiola:	Runtime	storage	options
38
• Global	variables	in	memory
• are	created	every	time	on	request	handler
• problems	with	concurrent	requests
• Module	variables	loaded	in	init_by_lua
• You	can	read	in	all	workers
• But	the	write,	thanks	to	CoW,	will	create	a	copy	of	the	module	for	the	VM
• ngx.shared.DICT
Wiola:	Runtime	storage	options
38
• Global	variables	in	memory
• are	created	every	time	on	request	handler
• problems	with	concurrent	requests
• Module	variables	loaded	in	init_by_lua
• You	can	read	in	all	workers
• But	the	write,	thanks	to	CoW,	will	create	a	copy	of	the	module	for	the	VM
• ngx.shared.DICT
• The	size	of	each	dictionary	is	specified	in	the	config	file	and	can	not	be	changed
Wiola:	Runtime	storage	options
38
• Global	variables	in	memory
• are	created	every	time	on	request	handler
• problems	with	concurrent	requests
• Module	variables	loaded	in	init_by_lua
• You	can	read	in	all	workers
• But	the	write,	thanks	to	CoW,	will	create	a	copy	of	the	module	for	the	VM
• ngx.shared.DICT
• The	size	of	each	dictionary	is	specified	in	the	config	file	and	can	not	be	changed
External	storage:	Redis,	Memcache,	PostgreSQL,	MySQL	and	others
Wiola:	Особенности.	lua_code_cache
39
Wiola:	Особенности.	lua_code_cache
39
• lua_code_cache	off;
Wiola:	Особенности.	lua_code_cache
39
• lua_code_cache	off;
• it	is	convenient	to	debug	the	code
Wiola:	Особенности.	lua_code_cache
39
• lua_code_cache	off;
• it	is	convenient	to	debug	the	code
• every	require()	is	executed	again	in	each	request
Wiola:	Особенности.	lua_code_cache
39
• lua_code_cache	off;
• it	is	convenient	to	debug	the	code
• every	require()	is	executed	again	in	each	request
• Even	the	modules	loaded	into	init_by_lua	are	re-executed
Wiola:	Особенности.	lua_code_cache
39
• lua_code_cache	off;
• it	is	convenient	to	debug	the	code
• every	require()	is	executed	again	in	each	request
• Even	the	modules	loaded	into	init_by_lua	are	re-executed
• lua_code_cache	on;
Wiola:	Особенности.	lua_code_cache
39
• lua_code_cache	off;
• it	is	convenient	to	debug	the	code
• every	require()	is	executed	again	in	each	request
• Even	the	modules	loaded	into	init_by_lua	are	re-executed
• lua_code_cache	on;
• for	production	environment
Wiola:	Особенности.	lua_code_cache
39
• lua_code_cache	off;
• it	is	convenient	to	debug	the	code
• every	require()	is	executed	again	in	each	request
• Even	the	modules	loaded	into	init_by_lua	are	re-executed
• lua_code_cache	on;
• for	production	environment
• each	require()	is	executed	once	and	is	cached
Wiola:	Особенности.	lua_code_cache
39
• lua_code_cache	off;
• it	is	convenient	to	debug	the	code
• every	require()	is	executed	again	in	each	request
• Even	the	modules	loaded	into	init_by_lua	are	re-executed
• lua_code_cache	on;
• for	production	environment
• each	require()	is	executed	once	and	is	cached
• whenever	you	change	the	code,	you	need	to	reload	nginx
Wiola:	Publication	in	luarocks,	opm
40
Wiola:	Publication	in	luarocks,	opm
40
• luarocks:	there	is	one	part	of	
the	dependencies,	there	is	no	
other:
Wiola:	Publication	in	luarocks,	opm
40
• luarocks:	there	is	one	part	of	
the	dependencies,	there	is	no	
other:
- 	lua-resty-websocket
Wiola:	Publication	in	luarocks,	opm
40
• luarocks:	there	is	one	part	of	
the	dependencies,	there	is	no	
other:
- 	lua-resty-websocket
- 	lua-resty-redis
Wiola:	Publication	in	luarocks,	opm
40
• luarocks:	there	is	one	part	of	
the	dependencies,	there	is	no	
other:
- 	lua-resty-websocket
- 	lua-resty-redis
✓	rapidjson
Wiola:	Publication	in	luarocks,	opm
40
• luarocks:	there	is	one	part	of	
the	dependencies,	there	is	no	
other:
- 	lua-resty-websocket
- 	lua-resty-redis
✓	rapidjson
✓	lua-resty-hmac
Wiola:	Publication	in	luarocks,	opm
40
• luarocks:	there	is	one	part	of	
the	dependencies,	there	is	no	
other:
- 	lua-resty-websocket
- 	lua-resty-redis
✓	rapidjson
✓	lua-resty-hmac
✓	lua-messagepack
Wiola:	Publication	in	luarocks,	opm
40
• luarocks:	there	is	one	part	of	
the	dependencies,	there	is	no	
other:
- 	lua-resty-websocket
- 	lua-resty-redis
✓	rapidjson
✓	lua-resty-hmac
✓	lua-messagepack
• opm	(OpenResty	Package	
Manager):	accurate	to	
"reverse":
Wiola:	Publication	in	luarocks,	opm
40
• luarocks:	there	is	one	part	of	
the	dependencies,	there	is	no	
other:
- 	lua-resty-websocket
- 	lua-resty-redis
✓	rapidjson
✓	lua-resty-hmac
✓	lua-messagepack
• opm	(OpenResty	Package	
Manager):	accurate	to	
"reverse":
✓	lua-resty-websocket
Wiola:	Publication	in	luarocks,	opm
40
• luarocks:	there	is	one	part	of	
the	dependencies,	there	is	no	
other:
- 	lua-resty-websocket
- 	lua-resty-redis
✓	rapidjson
✓	lua-resty-hmac
✓	lua-messagepack
• opm	(OpenResty	Package	
Manager):	accurate	to	
"reverse":
✓	lua-resty-websocket
✓	lua-resty-redis
Wiola:	Publication	in	luarocks,	opm
40
• luarocks:	there	is	one	part	of	
the	dependencies,	there	is	no	
other:
- 	lua-resty-websocket
- 	lua-resty-redis
✓	rapidjson
✓	lua-resty-hmac
✓	lua-messagepack
• opm	(OpenResty	Package	
Manager):	accurate	to	
"reverse":
✓	lua-resty-websocket
✓	lua-resty-redis
- 	rapidjson
Wiola:	Publication	in	luarocks,	opm
40
• luarocks:	there	is	one	part	of	
the	dependencies,	there	is	no	
other:
- 	lua-resty-websocket
- 	lua-resty-redis
✓	rapidjson
✓	lua-resty-hmac
✓	lua-messagepack
• opm	(OpenResty	Package	
Manager):	accurate	to	
"reverse":
✓	lua-resty-websocket
✓	lua-resty-redis
- 	rapidjson
✓	lua-resty-hmac
Wiola:	Publication	in	luarocks,	opm
40
• luarocks:	there	is	one	part	of	
the	dependencies,	there	is	no	
other:
- 	lua-resty-websocket
- 	lua-resty-redis
✓	rapidjson
✓	lua-resty-hmac
✓	lua-messagepack
• opm	(OpenResty	Package	
Manager):	accurate	to	
"reverse":
✓	lua-resty-websocket
✓	lua-resty-redis
- 	rapidjson
✓	lua-resty-hmac
- 	lua-messagepack
Useful	links	about	WAMP
41
Useful	links	about	WAMP
• WAMP	main	site:	http://wamp-proto.org/
• WAMP	spec	on	github:	github.com/wamp-proto/wamp-proto
• Mailing	list:	https://groups.google.com/forum/#!forum/wampws
• Wiola:	https://github.com/KSDaemon/wiola
• Loowy:	https://github.com/KSDaemon/Loowy
• Wampy.js:	https://github.com/KSDaemon/wampy.js
• Wiola	docker	image:	https://hub.docker.com/r/421p/wiola/
• Crossbar	Router:	https://crossbar.io/	и	https://demo.crossbar.io/
41
WAMP:	Conclusion
42
WAMP:	Conclusion
• A	simple	and	open	Protocol
42
WAMP:	Conclusion
• A	simple	and	open	Protocol
• RPC	and	PubSub	in	one	transport/protocol
42
WAMP:	Conclusion
• A	simple	and	open	Protocol
• RPC	and	PubSub	in	one	transport/protocol
• Any	transport	and	serialization
42
WAMP:	Conclusion
• A	simple	and	open	Protocol
• RPC	and	PubSub	in	one	transport/protocol
• Any	transport	and	serialization
• Allows	you	to	build	distributed	applications	with	loosely	coupled	
components
42
WAMP:	Conclusion
• A	simple	and	open	Protocol
• RPC	and	PubSub	in	one	transport/protocol
• Any	transport	and	serialization
• Allows	you	to	build	distributed	applications	with	loosely	coupled	
components
• There	are	implementations	in	many	languages
42
WAMP:	Conclusion
• A	simple	and	open	Protocol
• RPC	and	PubSub	in	one	transport/protocol
• Any	transport	and	serialization
• Allows	you	to	build	distributed	applications	with	loosely	coupled	
components
• There	are	implementations	in	many	languages
• Open	source
42
WAMP:	Conclusion
• A	simple	and	open	Protocol
• RPC	and	PubSub	in	one	transport/protocol
• Any	transport	and	serialization
• Allows	you	to	build	distributed	applications	with	loosely	coupled	
components
• There	are	implementations	in	many	languages
• Open	source
• A	small	but	friendly	community
42
WAMP:	Conclusion
43
WAMP:	Conclusion
• Useful	architectural	solution
43
WAMP:	Conclusion
• Useful	architectural	solution
• A	great	option	for	your	IoT	project!	(IMHO:	better	than	MQTT)
43
WAMP:	Conclusion
• Useful	architectural	solution
• A	great	option	for	your	IoT	project!	(IMHO:	better	than	MQTT)
• Try	WAMP:
43
WAMP:	Conclusion
• Useful	architectural	solution
• A	great	option	for	your	IoT	project!	(IMHO:	better	than	MQTT)
• Try	WAMP:
• Already	have	nginx/openresty?	—	try	Wiola	(bit.ly/wiola-router)
43
WAMP:	Conclusion
• Useful	architectural	solution
• A	great	option	for	your	IoT	project!	(IMHO:	better	than	MQTT)
• Try	WAMP:
• Already	have	nginx/openresty?	—	try	Wiola	(bit.ly/wiola-router)
• Are	you	using	a	docker?
43
WAMP:	Conclusion
• Useful	architectural	solution
• A	great	option	for	your	IoT	project!	(IMHO:	better	than	MQTT)
• Try	WAMP:
• Already	have	nginx/openresty?	—	try	Wiola	(bit.ly/wiola-router)
• Are	you	using	a	docker?
• docker	pull	421p/wiola
43
WAMP:	Conclusion
• Useful	architectural	solution
• A	great	option	for	your	IoT	project!	(IMHO:	better	than	MQTT)
• Try	WAMP:
• Already	have	nginx/openresty?	—	try	Wiola	(bit.ly/wiola-router)
• Are	you	using	a	docker?
• docker	pull	421p/wiola
• docker	pull	crossbario/crossbar
43
WAMP:	Conclusion
• Useful	architectural	solution
• A	great	option	for	your	IoT	project!	(IMHO:	better	than	MQTT)
• Try	WAMP:
• Already	have	nginx/openresty?	—	try	Wiola	(bit.ly/wiola-router)
• Are	you	using	a	docker?
• docker	pull	421p/wiola
• docker	pull	crossbario/crossbar
• WAMP	client	for	every	taste	and	color	(wamp-proto.org/implementations/)
43
Thank	you	for	attention!
And	your	questions	:)
44
Konstantin Burkalev
• Mail: kostik@ksdaemon.ru
• Twitter: @KSDaemon
• GitHub: KSDaemon
• Blog: blog.ksdaemon.ru
• SDCast: sdcast.ksdaemon.ru

Weitere ähnliche Inhalte

Was ist angesagt?

Building the Internet of Things with Thingsquare and Contiki - day 1, part 2
Building the Internet of Things with Thingsquare and Contiki - day 1, part 2Building the Internet of Things with Thingsquare and Contiki - day 1, part 2
Building the Internet of Things with Thingsquare and Contiki - day 1, part 2Adam Dunkels
 
Going Beyond UDP Acceleration - SLide Deck
Going Beyond UDP Acceleration - SLide DeckGoing Beyond UDP Acceleration - SLide Deck
Going Beyond UDP Acceleration - SLide DeckFileCatalyst
 
Can you trust Neutron?
Can you trust Neutron?Can you trust Neutron?
Can you trust Neutron?salv_orlando
 
fast file transfer - FileCatalyst vs FTP
fast file transfer - FileCatalyst vs FTPfast file transfer - FileCatalyst vs FTP
fast file transfer - FileCatalyst vs FTPFileCatalyst
 
Accelerate file transfers with a software defined media network
Accelerate file transfers with a software defined media network Accelerate file transfers with a software defined media network
Accelerate file transfers with a software defined media network FileCatalyst
 
How to build a Neutron Plugin (stadium edition)
How to build a Neutron Plugin (stadium edition)How to build a Neutron Plugin (stadium edition)
How to build a Neutron Plugin (stadium edition)Salvatore Orlando
 
How to Reduce Database Load with Sparse Branches
How to Reduce Database Load with Sparse BranchesHow to Reduce Database Load with Sparse Branches
How to Reduce Database Load with Sparse BranchesPerforce
 
From a Kafkaesque Story to The Promised Land at LivePerson
From a Kafkaesque Story to The Promised Land at LivePersonFrom a Kafkaesque Story to The Promised Land at LivePerson
From a Kafkaesque Story to The Promised Land at LivePersonLivePerson
 
Peeling back the Lambda layers
Peeling back the Lambda layersPeeling back the Lambda layers
Peeling back the Lambda layersPatrick McCaffrey
 
Step-by-Step Introduction to Apache Flink
Step-by-Step Introduction to Apache Flink Step-by-Step Introduction to Apache Flink
Step-by-Step Introduction to Apache Flink Slim Baltagi
 
Preparing for SRE Interviews
Preparing for SRE InterviewsPreparing for SRE Interviews
Preparing for SRE InterviewsShivam Mitra
 
Repeating History...On Purpose...with Elixir
Repeating History...On Purpose...with ElixirRepeating History...On Purpose...with Elixir
Repeating History...On Purpose...with ElixirBarry Jones
 
Open source tools for optimizing your peering infrastructure @ DE-CIX TechMee...
Open source tools for optimizing your peering infrastructure @ DE-CIX TechMee...Open source tools for optimizing your peering infrastructure @ DE-CIX TechMee...
Open source tools for optimizing your peering infrastructure @ DE-CIX TechMee...Daniel Czerwonk
 
Introduction to Kafka
Introduction to KafkaIntroduction to Kafka
Introduction to KafkaDucas Francis
 
Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)
Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)
Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)Ahmed El-Arabawy
 
Integrating Funambol with CalDAV and LDAP
Integrating Funambol with CalDAV and LDAPIntegrating Funambol with CalDAV and LDAP
Integrating Funambol with CalDAV and LDAPRoberto Polli
 
Oram And Secure Computation
Oram And Secure ComputationOram And Secure Computation
Oram And Secure ComputationChong-Kuan Chen
 

Was ist angesagt? (20)

Building the Internet of Things with Thingsquare and Contiki - day 1, part 2
Building the Internet of Things with Thingsquare and Contiki - day 1, part 2Building the Internet of Things with Thingsquare and Contiki - day 1, part 2
Building the Internet of Things with Thingsquare and Contiki - day 1, part 2
 
Going Beyond UDP Acceleration - SLide Deck
Going Beyond UDP Acceleration - SLide DeckGoing Beyond UDP Acceleration - SLide Deck
Going Beyond UDP Acceleration - SLide Deck
 
Rooster Tech Talk
Rooster Tech TalkRooster Tech Talk
Rooster Tech Talk
 
Can you trust Neutron?
Can you trust Neutron?Can you trust Neutron?
Can you trust Neutron?
 
fast file transfer - FileCatalyst vs FTP
fast file transfer - FileCatalyst vs FTPfast file transfer - FileCatalyst vs FTP
fast file transfer - FileCatalyst vs FTP
 
Accelerate file transfers with a software defined media network
Accelerate file transfers with a software defined media network Accelerate file transfers with a software defined media network
Accelerate file transfers with a software defined media network
 
How to build a Neutron Plugin (stadium edition)
How to build a Neutron Plugin (stadium edition)How to build a Neutron Plugin (stadium edition)
How to build a Neutron Plugin (stadium edition)
 
How to Reduce Database Load with Sparse Branches
How to Reduce Database Load with Sparse BranchesHow to Reduce Database Load with Sparse Branches
How to Reduce Database Load with Sparse Branches
 
From a Kafkaesque Story to The Promised Land at LivePerson
From a Kafkaesque Story to The Promised Land at LivePersonFrom a Kafkaesque Story to The Promised Land at LivePerson
From a Kafkaesque Story to The Promised Land at LivePerson
 
Peeling back the Lambda layers
Peeling back the Lambda layersPeeling back the Lambda layers
Peeling back the Lambda layers
 
Step-by-Step Introduction to Apache Flink
Step-by-Step Introduction to Apache Flink Step-by-Step Introduction to Apache Flink
Step-by-Step Introduction to Apache Flink
 
Preparing for SRE Interviews
Preparing for SRE InterviewsPreparing for SRE Interviews
Preparing for SRE Interviews
 
Spacebrew @ SFPC
Spacebrew @ SFPCSpacebrew @ SFPC
Spacebrew @ SFPC
 
Repeating History...On Purpose...with Elixir
Repeating History...On Purpose...with ElixirRepeating History...On Purpose...with Elixir
Repeating History...On Purpose...with Elixir
 
Open source tools for optimizing your peering infrastructure @ DE-CIX TechMee...
Open source tools for optimizing your peering infrastructure @ DE-CIX TechMee...Open source tools for optimizing your peering infrastructure @ DE-CIX TechMee...
Open source tools for optimizing your peering infrastructure @ DE-CIX TechMee...
 
Introduction to Kafka
Introduction to KafkaIntroduction to Kafka
Introduction to Kafka
 
Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)
Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)
Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)
 
Integrating Funambol with CalDAV and LDAP
Integrating Funambol with CalDAV and LDAPIntegrating Funambol with CalDAV and LDAP
Integrating Funambol with CalDAV and LDAP
 
Apache Flink Hands On
Apache Flink Hands OnApache Flink Hands On
Apache Flink Hands On
 
Oram And Secure Computation
Oram And Secure ComputationOram And Secure Computation
Oram And Secure Computation
 

Ähnlich wie WAMP as a platform for composite SOA applications and its implementation on Lua

Adding Real-time Features to PHP Applications
Adding Real-time Features to PHP ApplicationsAdding Real-time Features to PHP Applications
Adding Real-time Features to PHP ApplicationsRonny López
 
VA Smalltalk Update
VA Smalltalk UpdateVA Smalltalk Update
VA Smalltalk UpdateESUG
 
Apache Curator: Past, Present and Future
Apache Curator: Past, Present and FutureApache Curator: Past, Present and Future
Apache Curator: Past, Present and FutureJordan Zimmerman
 
Enterprise Messaging with RabbitMQ.pdf
Enterprise Messaging with RabbitMQ.pdfEnterprise Messaging with RabbitMQ.pdf
Enterprise Messaging with RabbitMQ.pdfOrtus Solutions, Corp
 
7 Apache Process Cloudstack Developer Day
7 Apache Process Cloudstack Developer Day7 Apache Process Cloudstack Developer Day
7 Apache Process Cloudstack Developer DayKimihiko Kitase
 
Cloud Services Powered by IBM SoftLayer and NetflixOSS
Cloud Services Powered by IBM SoftLayer and NetflixOSSCloud Services Powered by IBM SoftLayer and NetflixOSS
Cloud Services Powered by IBM SoftLayer and NetflixOSSaspyker
 
Serverless brewbox
Serverless   brewboxServerless   brewbox
Serverless brewboxLino Telera
 
OpenStack Networking: Developing and Delivering a Commercial Solution for Lo...
OpenStack Networking:  Developing and Delivering a Commercial Solution for Lo...OpenStack Networking:  Developing and Delivering a Commercial Solution for Lo...
OpenStack Networking: Developing and Delivering a Commercial Solution for Lo...Radware
 
What is Kafka & why is it Important? (UKOUG Tech17, Birmingham, UK - December...
What is Kafka & why is it Important? (UKOUG Tech17, Birmingham, UK - December...What is Kafka & why is it Important? (UKOUG Tech17, Birmingham, UK - December...
What is Kafka & why is it Important? (UKOUG Tech17, Birmingham, UK - December...Lucas Jellema
 
Integrating Taverna Player into Scratchpads
Integrating Taverna Player into ScratchpadsIntegrating Taverna Player into Scratchpads
Integrating Taverna Player into ScratchpadsRobert Haines
 
Spark Streaming + Kafka 0.10: an integration story by Joan Viladrosa Riera at...
Spark Streaming + Kafka 0.10: an integration story by Joan Viladrosa Riera at...Spark Streaming + Kafka 0.10: an integration story by Joan Viladrosa Riera at...
Spark Streaming + Kafka 0.10: an integration story by Joan Viladrosa Riera at...Big Data Spain
 
Immutable Infrastructure: the new App Deployment
Immutable Infrastructure: the new App DeploymentImmutable Infrastructure: the new App Deployment
Immutable Infrastructure: the new App DeploymentAxel Fontaine
 
Contributing to OpenStack
Contributing to OpenStackContributing to OpenStack
Contributing to OpenStackdevkulkarni
 
Building real time applications with Symfony2
Building real time applications with Symfony2Building real time applications with Symfony2
Building real time applications with Symfony2Antonio Peric-Mazar
 
Scalable Machine Learning in R and Python with H2O
Scalable Machine Learning in R and Python with H2OScalable Machine Learning in R and Python with H2O
Scalable Machine Learning in R and Python with H2OSri Ambati
 
Building Modern Digital Services on Scalable Private Government Infrastructur...
Building Modern Digital Services on Scalable Private Government Infrastructur...Building Modern Digital Services on Scalable Private Government Infrastructur...
Building Modern Digital Services on Scalable Private Government Infrastructur...Andrés Colón Pérez
 
DevOps Docs: Fast, Great Content for the Cloud
DevOps Docs: Fast, Great Content for the CloudDevOps Docs: Fast, Great Content for the Cloud
DevOps Docs: Fast, Great Content for the Cloudvanessa_wilburn
 
Apache Sever Technology By Greg Williams
Apache Sever Technology By Greg WilliamsApache Sever Technology By Greg Williams
Apache Sever Technology By Greg WilliamsGregWilliams65325
 
Handling 1 Billion Requests/hr with Minimal Latency Using Docker
Handling 1 Billion Requests/hr with Minimal Latency Using DockerHandling 1 Billion Requests/hr with Minimal Latency Using Docker
Handling 1 Billion Requests/hr with Minimal Latency Using DockerMatomy
 

Ähnlich wie WAMP as a platform for composite SOA applications and its implementation on Lua (20)

Adding Real-time Features to PHP Applications
Adding Real-time Features to PHP ApplicationsAdding Real-time Features to PHP Applications
Adding Real-time Features to PHP Applications
 
VA Smalltalk Update
VA Smalltalk UpdateVA Smalltalk Update
VA Smalltalk Update
 
Apache Curator: Past, Present and Future
Apache Curator: Past, Present and FutureApache Curator: Past, Present and Future
Apache Curator: Past, Present and Future
 
Enterprise Messaging with RabbitMQ.pdf
Enterprise Messaging with RabbitMQ.pdfEnterprise Messaging with RabbitMQ.pdf
Enterprise Messaging with RabbitMQ.pdf
 
7 Apache Process Cloudstack Developer Day
7 Apache Process Cloudstack Developer Day7 Apache Process Cloudstack Developer Day
7 Apache Process Cloudstack Developer Day
 
Cloud Services Powered by IBM SoftLayer and NetflixOSS
Cloud Services Powered by IBM SoftLayer and NetflixOSSCloud Services Powered by IBM SoftLayer and NetflixOSS
Cloud Services Powered by IBM SoftLayer and NetflixOSS
 
Serverless brewbox
Serverless   brewboxServerless   brewbox
Serverless brewbox
 
OpenStack Networking: Developing and Delivering a Commercial Solution for Lo...
OpenStack Networking:  Developing and Delivering a Commercial Solution for Lo...OpenStack Networking:  Developing and Delivering a Commercial Solution for Lo...
OpenStack Networking: Developing and Delivering a Commercial Solution for Lo...
 
What is Kafka & why is it Important? (UKOUG Tech17, Birmingham, UK - December...
What is Kafka & why is it Important? (UKOUG Tech17, Birmingham, UK - December...What is Kafka & why is it Important? (UKOUG Tech17, Birmingham, UK - December...
What is Kafka & why is it Important? (UKOUG Tech17, Birmingham, UK - December...
 
Cv fayaz
Cv fayazCv fayaz
Cv fayaz
 
Integrating Taverna Player into Scratchpads
Integrating Taverna Player into ScratchpadsIntegrating Taverna Player into Scratchpads
Integrating Taverna Player into Scratchpads
 
Spark Streaming + Kafka 0.10: an integration story by Joan Viladrosa Riera at...
Spark Streaming + Kafka 0.10: an integration story by Joan Viladrosa Riera at...Spark Streaming + Kafka 0.10: an integration story by Joan Viladrosa Riera at...
Spark Streaming + Kafka 0.10: an integration story by Joan Viladrosa Riera at...
 
Immutable Infrastructure: the new App Deployment
Immutable Infrastructure: the new App DeploymentImmutable Infrastructure: the new App Deployment
Immutable Infrastructure: the new App Deployment
 
Contributing to OpenStack
Contributing to OpenStackContributing to OpenStack
Contributing to OpenStack
 
Building real time applications with Symfony2
Building real time applications with Symfony2Building real time applications with Symfony2
Building real time applications with Symfony2
 
Scalable Machine Learning in R and Python with H2O
Scalable Machine Learning in R and Python with H2OScalable Machine Learning in R and Python with H2O
Scalable Machine Learning in R and Python with H2O
 
Building Modern Digital Services on Scalable Private Government Infrastructur...
Building Modern Digital Services on Scalable Private Government Infrastructur...Building Modern Digital Services on Scalable Private Government Infrastructur...
Building Modern Digital Services on Scalable Private Government Infrastructur...
 
DevOps Docs: Fast, Great Content for the Cloud
DevOps Docs: Fast, Great Content for the CloudDevOps Docs: Fast, Great Content for the Cloud
DevOps Docs: Fast, Great Content for the Cloud
 
Apache Sever Technology By Greg Williams
Apache Sever Technology By Greg WilliamsApache Sever Technology By Greg Williams
Apache Sever Technology By Greg Williams
 
Handling 1 Billion Requests/hr with Minimal Latency Using Docker
Handling 1 Billion Requests/hr with Minimal Latency Using DockerHandling 1 Billion Requests/hr with Minimal Latency Using Docker
Handling 1 Billion Requests/hr with Minimal Latency Using Docker
 

Kürzlich hochgeladen

Call Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance BookingCall Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance Bookingroncy bisnoi
 
Booking open Available Pune Call Girls Pargaon 6297143586 Call Hot Indian Gi...
Booking open Available Pune Call Girls Pargaon  6297143586 Call Hot Indian Gi...Booking open Available Pune Call Girls Pargaon  6297143586 Call Hot Indian Gi...
Booking open Available Pune Call Girls Pargaon 6297143586 Call Hot Indian Gi...Call Girls in Nagpur High Profile
 
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdfONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdfKamal Acharya
 
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete RecordCCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete RecordAsst.prof M.Gokilavani
 
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...Call Girls in Nagpur High Profile
 
Call for Papers - International Journal of Intelligent Systems and Applicatio...
Call for Papers - International Journal of Intelligent Systems and Applicatio...Call for Papers - International Journal of Intelligent Systems and Applicatio...
Call for Papers - International Journal of Intelligent Systems and Applicatio...Christo Ananth
 
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Bookingdharasingh5698
 
BSides Seattle 2024 - Stopping Ethan Hunt From Taking Your Data.pptx
BSides Seattle 2024 - Stopping Ethan Hunt From Taking Your Data.pptxBSides Seattle 2024 - Stopping Ethan Hunt From Taking Your Data.pptx
BSides Seattle 2024 - Stopping Ethan Hunt From Taking Your Data.pptxfenichawla
 
Generative AI or GenAI technology based PPT
Generative AI or GenAI technology based PPTGenerative AI or GenAI technology based PPT
Generative AI or GenAI technology based PPTbhaskargani46
 
chapter 5.pptx: drainage and irrigation engineering
chapter 5.pptx: drainage and irrigation engineeringchapter 5.pptx: drainage and irrigation engineering
chapter 5.pptx: drainage and irrigation engineeringmulugeta48
 
Vivazz, Mieres Social Housing Design Spain
Vivazz, Mieres Social Housing Design SpainVivazz, Mieres Social Housing Design Spain
Vivazz, Mieres Social Housing Design Spaintimesproduction05
 
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...SUHANI PANDEY
 
The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...
The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...
The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...ranjana rawat
 
Extrusion Processes and Their Limitations
Extrusion Processes and Their LimitationsExtrusion Processes and Their Limitations
Extrusion Processes and Their Limitations120cr0395
 
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...ranjana rawat
 
UNIT-II FMM-Flow Through Circular Conduits
UNIT-II FMM-Flow Through Circular ConduitsUNIT-II FMM-Flow Through Circular Conduits
UNIT-II FMM-Flow Through Circular Conduitsrknatarajan
 
University management System project report..pdf
University management System project report..pdfUniversity management System project report..pdf
University management System project report..pdfKamal Acharya
 
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...Dr.Costas Sachpazis
 

Kürzlich hochgeladen (20)

Call Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance BookingCall Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance Booking
 
Booking open Available Pune Call Girls Pargaon 6297143586 Call Hot Indian Gi...
Booking open Available Pune Call Girls Pargaon  6297143586 Call Hot Indian Gi...Booking open Available Pune Call Girls Pargaon  6297143586 Call Hot Indian Gi...
Booking open Available Pune Call Girls Pargaon 6297143586 Call Hot Indian Gi...
 
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdfONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
 
Roadmap to Membership of RICS - Pathways and Routes
Roadmap to Membership of RICS - Pathways and RoutesRoadmap to Membership of RICS - Pathways and Routes
Roadmap to Membership of RICS - Pathways and Routes
 
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete RecordCCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
 
(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7
(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7
(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7
 
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
 
Call for Papers - International Journal of Intelligent Systems and Applicatio...
Call for Papers - International Journal of Intelligent Systems and Applicatio...Call for Papers - International Journal of Intelligent Systems and Applicatio...
Call for Papers - International Journal of Intelligent Systems and Applicatio...
 
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
 
BSides Seattle 2024 - Stopping Ethan Hunt From Taking Your Data.pptx
BSides Seattle 2024 - Stopping Ethan Hunt From Taking Your Data.pptxBSides Seattle 2024 - Stopping Ethan Hunt From Taking Your Data.pptx
BSides Seattle 2024 - Stopping Ethan Hunt From Taking Your Data.pptx
 
Generative AI or GenAI technology based PPT
Generative AI or GenAI technology based PPTGenerative AI or GenAI technology based PPT
Generative AI or GenAI technology based PPT
 
chapter 5.pptx: drainage and irrigation engineering
chapter 5.pptx: drainage and irrigation engineeringchapter 5.pptx: drainage and irrigation engineering
chapter 5.pptx: drainage and irrigation engineering
 
Vivazz, Mieres Social Housing Design Spain
Vivazz, Mieres Social Housing Design SpainVivazz, Mieres Social Housing Design Spain
Vivazz, Mieres Social Housing Design Spain
 
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...
 
The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...
The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...
The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...
 
Extrusion Processes and Their Limitations
Extrusion Processes and Their LimitationsExtrusion Processes and Their Limitations
Extrusion Processes and Their Limitations
 
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
 
UNIT-II FMM-Flow Through Circular Conduits
UNIT-II FMM-Flow Through Circular ConduitsUNIT-II FMM-Flow Through Circular Conduits
UNIT-II FMM-Flow Through Circular Conduits
 
University management System project report..pdf
University management System project report..pdfUniversity management System project report..pdf
University management System project report..pdf
 
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
 

WAMP as a platform for composite SOA applications and its implementation on Lua