1.因为dubbo服务化的便捷和高效,使得dubbo在国内很流行,加上spring boot的restful风格,使得spring boot + dubbo成为一个很好的搭配。web
下面根据公司实际项目架构,抽离出的基本的dubbo(restful) + 微服务的架构模式。redis
微服务架构图:spring
说明:数据库
1. 用户请求进来通过NGINX作转发到不一样项目,有一台NGINX作心跳检测备用NGINX, 请求被转发到不一样项目集群,项目集群不直接操做数据库,而是经过RPC按需调用各个服务(这里用了dubbo作微服务框架, 也能够用spring cloud等),按需存取redis缓存数据,组装数据后返回。缓存
2. redis作了主从同步,各个项目和各个微服务模块均可对redis进行按需存取操做。tomcat
3. 定时任务集群按需把全部基础数据加载到redis,及定时对数据库数据进行更新操做,定时任务集群同时也是按需调用各个微服务模块,不直接操做数据库,经过服务模块化把对数据库的操做都封装在指定的模块中。restful
4. 数据库作主从同步,主库读写操做,从库只读操做,只开放服务模块的IP对其进行读写操做。架构
5. 每一个服务化模块都是用Spring Boot加载项目配置,传统是用tomcat是部署web项目,如今直接用内置的微型tomcat直接加载配置文件运行服务,重启也很是快,只要几秒,我的感受很是好用。框架
6.每一个项目集群调用微服务集群时,不必定非要用dubbo, 也可使用restful接口, 只要在每一个服务模块定义好restful接口,就能够进行调用,一样也是很是好用,这边项目两种方式都在用,开始用dubbo, 后来也加上了restful接口。模块化
7. 项目的扩展理论上能够经过增长项目集群中的机器、模块化服务集群、Redis集群和数据库集群方式实现无限扩展。并且随着服务模块数量的增长,项目开发将会变得愈来愈高效,只需在控制层组装数据便可。
8. 上面这个架构在这边公司毫无压力地支撑起了两千多W用户量,推荐给你们共同参考研究。
附:dubbo的安装配置请参考本人以前的文章:https://my.oschina.net/xiejunbo/blog/751010