U8SDK——U8Server业务分离部署实践

作者: 分类: U8SDK 发布时间: 2017-01-07 17:58 64条评论

经过几天的努力, 终于将U8Server逻辑一分为二, 分割为U8Server和U8ServerManager。 其中U8Server职责,负责登录认证和支付回调业务的处理;U8ServerManager负责后台管理逻辑的处理。同时,顺便将之前使用的Spring3和Hibernate3框架版本升级到了Spring4和Hibernate4版本。

分割逻辑之后, 根据我们之前说的,为了多个U8Server实例和U8ServerManager之间能够实现数据同步,同时减小Mysql数据库压力,提高U8Server并发处理能力,我们引入了Redis共享缓存组件。

虽然同步数据,我们也可以引入消息中间件组件来实现,比如之间已经有客户同学使用Redis的pub/sub来实现数据同步了,但是,相比于都需要引入一个组件成本,我们这里就彻底一些,直接使用Redis做共享缓存,因为除了缓存游戏,渠道,渠道商等数据,我们还将用户,订单等数据也一并进行缓存处理。

Spring已经将Redis API进行了抽象和封装, 在Spring框架中,使用Redis还是比较简单的。 同时,Redis的哨兵模式和集群模式,也得到比较好的支持,通过一些配置即可实现。

这些代码细节不再赘述, 这里我们主要来看下拆分之后,分开部署,然后通过nginx负载均衡,让u8server对于前端的访问透明化。

首先, 我们准备一下需要的基础工具:

1、安装两个Tomcat 7,IP地址和端口分别如下:

2、Redis 3.2.5版本 一个(这里我们暂时不采用哨兵和集群,只配置一个redis)

3、nginx 1.10.1

4、mysql 5.7

下面是配置步骤:

1、配置U8Server和U8ServerManager

我们配置U8Server和U8ServerManager中的jdbc.properties, 让其连接相同的mysql和redis

U8Server的jdbc.properties配置:

U8ServerManager的jdbc.properties配置:

配置好了之后,我们分别编译U8Server和U8ServerManager,生成u8server.war和u8servermanager.war两个部署包

2、配置Tomcat,并部署

将u8server.war文件放到Tomcat1的webapp目录下, 将u8servermanager.war文件放到Tomcat2的webapp目录下

然后,我们分别将tomcat的根目录设置为这两个项目的目录, 打开Tomcat1/conf/server.xml文件, 在里面添加一条配置:

打开Tomcat2/conf/server.xml文件,除了将里面的8080等端口进行修改之外, 我们也在里面添加一条配置:

3、配置Redis

这里我们仅仅配置一个Redis,Redis在我们这里仅仅作为缓存使用,所以,我们不需要开启他的持久化功能。 打开redis.conf配置文件

在里面找到:save 900 1等配置, 删掉, 并添加一条:save “”

然后,找到bind 127.0.0.1 改为 bind 127.0.0.1 121.42.144.254

4、配置nginx

为了让前端应用或者浏览器中访问无需关心后端U8Server实例的部署情况,我们这里采用nginx来做代理。

我们希望通过访问http://121.42.144.254/admin/index 可以访问到后台管理系统,访问http://121.42.144.254/user/getToken可以访问到登录认证接口。虽然这两个协议,已经在两个不同的Tomcat实例中

为了能够实现这样的效果, 我们需要根据访问URL来做针对性的代理匹配。 在后台管理系统U8ServerManager中, 所有请求的相对路径都是/admin和/analytics
,所以,我们根据URL的规则来匹配。 完整的代理配置如下,具体一些细节可以参考下面注释

nginx/conf.d/default.conf

现在我们启动mysql,redis,两个tomcat和nginx来看一下访问效果, 看看能否正确访问到对应的地址。

U8Server上的协议测试:

U8ServerManager上的协议测试:

目前阿里云上上面这些演示地址,就是这样部署之后的效果了。

本文出自 U8SDK技术博客,转载时请注明出处及相应链接。

本文永久链接: http://www.uustory.com/?p=2136

评论功能已经关闭,请加入U8SDK技术群进行讨论和咨询:207609068
Ɣ回顶部
U8SDK技术群 x
技术同学请加入
点击加入