From c6272c54497f59dddfa256bad12fd1a6861b7335 Mon Sep 17 00:00:00 2001 From: wentch <22250530@qq.com> Date: Fri, 8 Jan 2016 17:13:28 +0800 Subject: [PATCH] --- redkale.html | 130 ++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 109 insertions(+), 21 deletions(-) diff --git a/redkale.html b/redkale.html index af9efeb0b..c34983a99 100644 --- a/redkale.html +++ b/redkale.html @@ -74,15 +74,12 @@
在早期用户量很少或者开发、调试环境中只需部署一个进程就可满足需求。

如上图,所有模块的HttpServlet、Service与Source数据库操作全部署在一起。 application.xml作简单的配置即可:
-<application port="5050">
-
+ <application port="5050">
<server protocol="HTTP" port="6060" root="root">
<services autoload="true" />
<servlets autoload="true"/>
- </server>
-
-</application>
-
+ </server>
+</application>2、多点部署
@@ -91,7 +88,6 @@如上图,两个进程间的Serivce都是本地模式,两者会通过SNCP服务保持数据同步,若DataSource开启了数据缓存也会自动同步。两套的配置文件相同,配置如下:
<application port="5050">
-
<resources>
<group name="ALL">
<node addr="192.168.50.110" port="7070"/>
@@ -112,8 +108,7 @@
<!-- SNCP 监听 Server -->
<server protocol="SNCP" port="7070">
<services autoload="true" groups="ALL"/>
- </server>
-
+ </server>
</application>
如上图,对HttpServlet与Service进行了分离。每个接入层的Service都是远程模式,业务层只需提供SNCP供远程调用。
接入层中每个进程的配置相同,配置如下:
-<application port="5050">
-
+ <application port="5050">
<resources>
<group name="ALL">
<node addr="192.168.50.110" port="7070"/>
@@ -141,11 +135,9 @@
<servlets autoload="true" />
</server>
-</application>
-
- 业务层中每个进程的配置相同,置如下:
- <application port="5050">
-
+</application>
+ 业务层中每个进程的配置相同,配置如下:
+ <application port="5050">
<resources>
<group name="ALL">
<node addr="192.168.50.110" port="7070"/>
@@ -156,17 +148,113 @@
<!-- SNCP 监听 Server -->
<server protocol="SNCP" port="7070">
<services autoload="true" groups="ALL"/>
- </server>
-
-</application>
-
+ </server>
+</application>4、微服务部署
-在生产环境需要避免单点问题,一个服务一般会部署多套。在此做个简单的容灾部署,最前端部署一个nginx作反向代理和负载均衡服务器,后面部署两套系统。
+当用户量和发帖量增加到上百万的时候,明显地将所有模块的服务部署到一个进程里是不行的。 因此需要将Service服务都独立部署形成微服务架构。

如上图,将Serivice都独立部署并进行容灾部署,当然如果有需要,Servlet之间、Source都可以各自分离独立部署。不同类型的Service之间都是远程模式调用。
+接入层中每个进程的配置相同,配置如下:
+<application port="5050">
+ <resources>
+ <group name="USER_SERVICE">
+ <node addr="192.168.50.110" port="7070"/>
+ <node addr="192.168.50.111" port="7070"/>
+ </group>
+ <group name="NOTIFY_SERVICE">
+ <node addr="192.168.50.120" port="7070"/>
+ <node addr="192.168.50.121" port="7070"/>
+ </group>
+ <group name="FORUM_SERVICE">
+ <node addr="192.168.50.130" port="7070"/>
+ <node addr="192.168.50.131" port="7070"/>
+ </group>
+ </resources>
+ <!-- HTTP 监听 Server -->
+ <server protocol="HTTP" port="6060" root="root">
+ <!-- 前端配置了nginx,需要配置才能获取客户端真实的IP地址 -->
+ <request>
+ <remoteaddr value="request.headers.X-RemoteAddress"/>
+ </request>
+ <services autoload="true">
+ <service value="org.redkale.demo.UserService" groups="USER_SERVICE"/>
+ <service value="org.redkale.demo.NotifyService" groups="NOTIFY_SERVICE"/>
+ <service value="org.redkale.demo.ForumService" groups="FORUM_SERVICE"/>
+ </services>
+ <servlets autoload="true" />
+ </server>
+</application>用户模块UserService服务群中各个进程的配置相同,配置如下:
+<application port="5050">
+ <resources>
+ <group name="NOTIFY_SERVICE">
+ <node addr="192.168.50.120" port="7070"/>
+ <node addr="192.168.50.121" port="7070"/>
+ </group>
+ <group name="FORUM_SERVICE">
+ <node addr="192.168.50.130" port="7070"/>
+ <node addr="192.168.50.131" port="7070"/>
+ </group>
+ </resources>
+ <!-- SNCP 监听 Server -->
+ <server protocol="SNCP" port="7070">
+ <services autoload="true">
+ <service value="org.redkale.demo.NotifyService" groups="NOTIFY_SERVICE"/>
+ <service value="org.redkale.demo.ForumService" groups="FORUM_SERVICE"/>
+ </services>
+ <servlets autoload="true" />
+ </server>
+</application>通知模块NotifyService服务群中各个进程的配置相同,配置如下:
+<application port="5050">
+ <resources>
+ <group name="USER_SERVICE">
+ <node addr="192.168.50.110" port="7070"/>
+ <node addr="192.168.50.111" port="7070"/>
+ </group>
+ <group name="FORUM_SERVICE">
+ <node addr="192.168.50.130" port="7070"/>
+ <node addr="192.168.50.131" port="7070"/>
+ </group>
+ </resources>
+
+ <!-- SNCP 监听 Server -->
+ <server protocol="SNCP" port="7070">
+ <services autoload="true">
+ <service value="org.redkale.demo.UserService" groups="USER_SERVICE"/>
+ <service value="org.redkale.demo.ForumService" groups="FORUM_SERVICE"/>
+ </services>
+ <servlets autoload="true" />
+ </server>
+</application>帖子模块ForumService服务群中各个进程的配置相同,配置如下:
+<application port="5050">
+ <resources>
+ <group name="USER_SERVICE">
+ <node addr="192.168.50.110" port="7070"/>
+ <node addr="192.168.50.111" port="7070"/>
+ </group>
+ <group name="NOTIFY_SERVICE">
+ <node addr="192.168.50.120" port="7070"/>
+ <node addr="192.168.50.121" port="7070"/>
+ </group>
+ </resources>
+
+ <!-- SNCP 监听 Server -->
+ <server protocol="SNCP" port="7070">
+ <services autoload="true">
+ <service value="org.redkale.demo.UserService" groups="USER_SERVICE"/>
+ <service value="org.redkale.demo.NotifyService" groups="NOTIFY_SERVICE"/>
+ </services>
+ <servlets autoload="true" />
+ </server>
+</application><?xml version="1.0" encoding="UTF-8"?>
<!--