分布式架构系统可用的开源中间件分析
在分析上面分布式架构之前,我们来扯一个话外题,知道分布式架构,都是从单机架构学习进行过来的,当然对单机架构都比较熟悉了,这时从知识面,应该可以看出,一般在没有一定用户量,和服务器最初开始架构,不会采取分布式,而采取单机架构模式,这样可以节省成本也可以后期迭代,在单机架构模式下的知识点,有两个重点,也是面试经常问到,监考的问题:
1.数据库索引(B+树,用于查询检索)。
2.并发线程有关的内容。
其他的似乎有一定经验的人可以很好的掌握。
下面我们来分析一下上图的分布式的架构内容:
上图是一个大型分布式网站架构案例,当然还有别的架构方式,这个对于下面的内容比较有介绍性,所以借用一下。
看图片我们可以分析出几个架构的层次,从左到右,依次是:物理配置,网站应用层,网站服务层,数据存储层,大数据处理层。
- SpringMVC 作为MVC访问框架,如上图:这个框架应用于上图的网站应用层。
- MyBatis和MyBatis plus 作为ORM数据访问的框架,如上图:这个框架应用于上图的数据存储层。
- Dubbo 分布式服务框架,如上图:这个框架应用于上图的网站服务层。
- Zookeeper 分布式协调和注册中心(客户端可用Curator),如上图:这个服务应用于上图的网站服务层,可集群,主从部署。
- Redis 分布式缓存,也是内存缓存,特别在session缓存的应用,连接可用jedis,如上图:这个服务应用于上图的数据存储层,用于数据缓存。
- ActiveMQ 消息队列中间件,连接可用JMS,如:Spring-jms,如上图:这个服务应用于网站服务层,可集群,主从部署。实现消息同步和异步。
- Disconf 分布式配置,基于Zookeeper,如上图:这个服务应用于网站服务层,可主从部署,界面化配置服务。
- Shiro 轻量级权限框架,如上图:这个框架大部分应用于网站应用层,对其网站进行安全和权限做控制。
- Nginx HAProxy LVS 根据需要选择不同的负载均衡方式,Ngnix可做反向代理。
- SSO 单点登录,如上图:用于网站应用层和服务层。
- Solr 轻量级全文检索引擎,如上图:用于网站服务层。
- ElasticSearch 分布式检索引擎。
- Mail 邮件 如: Java Mail,如上图:用于网站服务层。
- Maven nexus Maven私服,如上图:用于网站服务层,自己的服务包的管理器
- Dokcer 虚拟化服务,自动化部署
- Netty Mina 模块通讯,长短连接,如上图,这两个框架用于网站服务层,是分布式服务之间的通讯。
- Hession Hession2 Java序列化,架构中的数据传输底层序列化,如:Dobbo就有Hession组件
- MyCat Sharding-jdbc分布式数据库中间件,如上图:这两个中间件常用于数据库分表,分库,主从数据库方式来调用数据。
- Hadoop Spark 大数据处理框架,如上图:这两个框架应用于大数据处理层。
- HDFS FastDFS是文件处理系统,如上图:应用于数据处理层
下面来说说微服务架构(大型微服务架构一定是采用分布式,分布式微服务是SOA分布式服务的进化,这句话有些牵强,但是可以说明问题)
Java微服务框架有一个常用框架的是SpringCloud,它是Spring出的,可以整合很多开源组件,下面我们来用个图来说明: