-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathservices.html
140 lines (112 loc) · 7.16 KB
/
services.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description"
content="ScaleCube is a decentralized cluster membership, failure detection, and gossip protocol solution for the Java VM">
<link rel="stylesheet" type="text/css" media="screen" href="stylesheets/stylesheet.css">
<script src="https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js?skin=desert"></script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-86674150-1', 'auto');
ga('send', 'pageview');
</script>
<title>ScaleCube</title>
</head>
<body onload="prettyPrint()">
<!-- HEADER -->
<div id="header_wrap" class="outer">
<header class="inner">
<a id="forkme_banner" href="https://github.com/scalecube/scalecube">View on GitHub</a>
<h1 id="project_title">ScaleCube Reactive Microservices</h1>
<h2 id="project_tagline">The Future is reactive - The Future is right here!</h2>
</header>
</div>
<!-- MAIN CONTENT -->
<div id="main_content_wrap" class="outer">
<section id="main_content" class="inner">
<h3>Overview</h3>
<P>Develop pure java microservices with scalecube-services, an Un-Opinionated Library.
Create distributed applications by breaking your application apart into decoupled services that
can be built and scaled separately.</P>
<p>
ScaleCube Microservices is a message-driven and asynchronous by default, built to scale due to its peer-to-peer nature.
Powered by scalecube-cluster gossip capabilities to answer the cross-cutting-concerns
such as: canary testing, service discovery, location transparency, fault-tolerance and real time failure-detection.
ScaleCube Microservices provides fluent java-8 functional APIs and <a href="https://projectreactor.io/" title="Reactor is a fully non-blocking foundation with efficient demand management.">Reactor</a> Project <a href="https://projectreactor.io/docs/core/release/api/reactor/core/publisher/Mono.html" title="A Reactive Streams Publisher with basic rx operators that completes successfully by emitting an element.">Mono</a> benefits.
The ScaleCube Microservices are lightweight and embeddable in-order to reduce restrictions regards service implementation;
it only requires a simple declaration of the Service APIs as an entry point to the service component.
With ScaleCube Microservices its possible to provision services within same process,
mulitple processes on the same hardware or mulitple processes on mulitple hardwares thus enabling ease of development and
testing of a distributed system.
<p>ScaleCube Microservices features:
<li>Fully Asynchronous and Reactive using <a href="https://projectreactor.io/" title="Reactor is a fully non-blocking foundation with efficient demand management.">Reactor</a> Project <a href="https://projectreactor.io/docs/core/release/api/reactor/core/publisher/Mono.html" title="A Reactive Streams Publisher with basic rx operators that completes successfully by emitting an element.">Mono</a>.</li>
<li>Out-of-the-box clustering infrastructure</li>
<li>Loosely coupled.</li>
<li>Transparent programming model within and across microservices.</li>
<li>Library and not a framework / platforms. Your code is java and not a scalecube code.</li>
<li>High resiliency, performance and scalability</li>
</p>
<h3>Basic Concepts</h3>
<a class="" href="">
<img src="images/microservice-arch.png">
</a>
<h5>Microservice</h5>
<p>
A Lightweight system component running on it's own process. Built around business capabilities and independently deployable by fully automated deployment machinery.
Isolated, distributed and have well bounded context, communicates via APIs. Member in a microservices cluster, discoverable and faliure aware.
</p>
<h5>Service Discovery</h5>
<p>
With ScaleCube Microservices each Microservice self-registeres at the cluster and utilizes the cluster gossip-protocol to declare and register so it can transparently communicate
with its peer microservices that share the same cluster group.
</p>
<h5>Routing</h5>
<p>
Microservice may have more then one instance or version of an instance at the cluster, the routing strategy is resposible to select the relevant microservice instance
when invoking a service. It can be but not limited to: <a href="https://en.wikipedia.org/wiki/Round-robin" title="Round-robin (RR) is one of the algorithms employed by process and network schedulers in computing.">Round-robin</a>, random selection, session based selection etc.
</p>
<h5>Service Proxy</h5>
<p>
Microservices are message driven and communicate via well defined service interface APIs. The consumer uses a service proxy as a client to the microservices generated from the Microservice interface.
</p>
<h3>Getting Started</h3>
<h5>Maven Repository</h5>
<p>
The ScaleCube Services repository is hosted on
<a href="http://search.maven.org/#search%7Cga%7C1%7Cio.scalecube">Maven Central</a>.
In order to use it just add dependency on the latest version in your pom.xml file:
</p>
<pre class="prettyprint">
<dependency>
<groupId>io.scalecube</groupId>
<artifactId>scalecube-services</artifactId>
<version>x.y.z</version>
</dependency>
</pre>
<h5>User Guide</h5>
<li><a href="./user-reference/services/DefineService.html">Defining services</a></li>
<li><a href="./user-reference/services/ServiceImplementation.html">Implementing services</a></li>
<li><a href="./user-reference/services/ProvisionClusterServices.html">Provisioning clustered services</a></li>
<li><a href="./user-reference/services/ConsumingServices.html">Consuming services</a></li>
<li><a href="./user-reference/services/ImplementingRouter.html">Implementing a router</a></li>
<li><a href="./user-reference/services/UsingDispatchers.html">Using service dispatchers</a></li>
<a href="./user-reference/services/DefineService.html">
<div class="next_link">
<strong>Next: </strong> Defining services
</div>
</a>
</section>
</div>
<!-- FOOTER -->
<div id="footer_wrap" class="outer">
<footer class="inner">
<p class="copyright">Maintained by <a href="https://github.com/scalecube">ScaleCube Team</a></p>
</footer>
</div>
</body>
</html>