1.由于dubbo服务化的便捷和高效,使得dubbo在国内很流行,加上spring boot的restful风格,使得spring boot + dubbo成为一个很好的搭配。

下面根据公司实际项目架构,抽离出的基本的dubbo(restful) + 微服务的架构模式。

微服务架构图:

dubbo 微服务架构 springbootdubbo微服务架构图_运维

 

说明:

1. 用户请求进来经过NGINX做转发到不同项目,有一台NGINX做心跳检测备用NGINX, 请求被转发到不同项目集群,项目集群不直接操作数据库,而是通过RPC按需调用各个服务(这里用了dubbo做微服务框架, 也可以用spring cloud等),按需存取redis缓存数据,组装数据后返回。

2. redis做了主从同步,各个项目和各个微服务模块都可对redis进行按需存取操作。

3. 定时任务集群按需把所有基础数据加载到redis,及定时对数据库数据进行更新操作,定时任务集群同时也是按需调用各个微服务模块,不直接操作数据库,通过服务模块化把对数据库的操作都封装在指定的模块中。

4. 数据库做主从同步,主库读写操作,从库只读操作,只开放服务模块的IP对其进行读写操作。

5. 每个服务化模块都是用Spring Boot加载项目配置,传统是用tomcat是部署web项目,现在直接用内置的微型tomcat直接加载配置文件运行服务,重启也非常快,只要几秒,个人感觉非常好用。

6.每个项目集群调用微服务集群时,不一定非要用dubbo, 也可以使用restful接口, 只要在每个服务模块定义好restful接口,就可以进行调用,同样也是非常好用,这边项目两种方式都在用,开始用dubbo, 后来也加上了restful接口。

7. 项目的扩展理论上可以通过增加项目集群中的机器、模块化服务集群、Redis集群和数据库集群方式实现无限扩展。而且随着服务模块数量的增加,项目开发将会变得越来越高效,只需在控制层组装数据即可。

8. 上面这个架构在这边公司毫无压力地支撑起了两千多W用户量,推荐给大家共同参考研究。