分布式架构利用开源框架之五大服务组件(Ngnix,Zookeeper,Dubbo,solr,MQ)
下图是一个分布式架构的案例,用这个案例来做下面的说明,服务组件是因为部署起来是一个服务。
- 第一大服务组件:Ngnix 用来做负载均衡或者反向代理
- 弟二大服务组件:Zookeeper 用来做注册中心服务,服务的注册与发现
- 第三大服务组件:Dubbo 用来做Rpc远程调用服务
- 第四大服务组件:solr(ElasticSearch) 用来做全文检索服务
- 第五大服务组件:MQ 用于消息中间件(ActiveMQ,RabbitMQ)
看图片我们可以分析出几个架构的层次,从左到右,依次是:物理配置,网站应用层,网站服务层,数据存储层,大数据处理层。以下框架都是通过Jar包组件的形式导入项目,他们不是以服务组件形式。
- SpringMVC 作为MVC访问框架,如上图:这个框架应用于上图的网站应用层。
- MyBatis和MyBatis plus 作为ORM数据访问的框架,如上图:这个框架应用于上图的数据存储层。
- Redis 分布式缓存,也是内存缓存,特别在session缓存的应用,连接可用jedis,如上图:这个服务应用于上图的数据存储层,用于数据缓存。
- ActiveMQ 消息队列中间件,连接可用JMS,如:Spring-jms,如上图:这个服务应用于网站服务层,可集群,主从部署。实现消息同步和异步。
- Disconf 分布式配置,基于Zookeeper,如上图:这个服务应用于网站服务层,可主从部署,界面化配置服务。
- Shiro 轻量级权限框架,如上图:这个框架大部分应用于网站应用层,对其网站进行安全和权限做控制。
- Nginx HAProxy LVS 根据需要选择不同的负载均衡方式,Ngnix可做反向代理。
- SSO 单点登录,如上图:用于网站应用层和服务层。
- Mail 邮件 如: Java Mail,如上图:用于网站服务层。
- Maven nexus Maven私服,如上图:用于网站服务层,自己的服务包的管理器
- Dokcer 虚拟化服务,自动化部署
- Netty Mina 模块通讯,长短连接,如上图,这两个框架用于网站服务层,是分布式服务之间的通讯。
- Hession Hession2 Java序列化,架构中的数据传输底层序列化,如:Dobbo就有Hession组件
- MyCat Sharding-jdbc分布式数据库中间件,如上图:这两个中间件常用于数据库分表,分库,主从数据库方式来调用数据。
- Hadoop Spark 大数据处理框架,如上图:这两个框架应用于大数据处理层。