单体应用与微应用典型架构比对

随着云化时代的到来,软件服务架构也从传统的单体架构向微服务架构转变,微服务架构发展的如火如荼,那么单体架构和微服务架构区别在哪里呢?

单体应用典型架构

在典型单体应用架构中,我们会横向部署多个应用,用来支撑系统的吞吐量。为了实现负载均衡,使用反向代理软件(Nginx)把请求均匀分发到每个Tomcat中。

为了降低数据库的压力,我们引入分布式缓存,把绝大多数请求在读写数据库前拦截掉,大大降低数据库压力。

为了进一步降低数据库压力,我们把数据库划分为读库和写库,读库可以有多个,通过同步机制把写库的数据同步到读库,实现数据同步。

单体应用的典型架构如下:
单体应用与微应用典型架构比对_第1张图片

微应用典型架构

为了解决单个Nginx的瓶颈,我们引入F5,F5是工作在网络第四层的负载均衡解决方案,可对TCP请求或更高层级的网络协议进行转发,实现对多个Nginx的均衡负载。

同时我们业务进行拆分,拆分成应用和服务。大数据培训应用负责满足用户的使用需求,每个应用分别负责具体的业务场景,相互之间可以做到独立升级迭代。可复用的功能代码单独抽取出来形成服务,每个服务也可以单独进行升级。当然各应用和服务之间的通讯少不了ESB统一访问协议了。应用统一通过ESB来访问后端服务,服务与服务之间也通过ESB来相互调用,以此降低系统的耦合程度。

在数据库层面,传统数据库不适用于复杂的查询场景,需要根据具体场景进行拆分选用合适的组件。如对于海量文件存储,可通过分布式文件系统HDFS解决,对于key value类型的数据,可通过HBase和Redis等方案解决。对于全文检索场景,可通过搜索引擎如ElasticSearch解决。

微应用的典型架构如下:

单体应用与微应用典型架构比对_第2张图片

你可能感兴趣的:(架构)