随着云化时代的到来,软件服务架构也从传统的单体架构向微服务架构转变,微服务架构倒退的热火朝天,那么单体架构和微服务架构区别在哪里呢?
单体利用典型架构
在典型单体利用架构中,咱们会横向部署多个利用,用来撑持零碎的吞吐量。为了实现负载平衡,应用反向代理软件(Nginx)把申请平均散发到每个 Tomcat 中。
为了升高数据库的压力,咱们引入分布式缓存,把绝大多数申请在读写数据库前拦挡掉,大大降低数据库压力。
为了进一步升高数据库压力,咱们把数据库划分为读库和写库,读库能够有多个,通过同步机制把写库的数据同步到读库,实现数据同步。
单体利用的典型架构如下:
微利用典型架构
为了解决单个 Nginx 的瓶颈,咱们引入 F5,F5 是工作在网络第四层的负载平衡解决方案,可对 TCP 申请或更高层级的网络协议进行转发,实现对多个 Nginx 的平衡负载。
同时咱们业务进行拆分,拆分成利用和服务。大数据培训利用负责满足用户的应用需要,每个利用别离负责具体的业务场景,相互之间能够做到独立降级迭代。可复用的性能代码独自抽取进去造成服务,每个服务也能够独自进行降级。当然各利用和服务之间的通信少不了 ESB 对立拜访协定了。利用对立通过 ESB 来拜访后端服务,服务与服务之间也通过 ESB 来互相调用,以此升高零碎的耦合水平。
在数据库层面,传统数据库不适用于简单的查问场景,须要依据具体场景进行拆分选用适合的组件。如对于海量文件存储,可通过分布式文件系统 HDFS 解决,对于 key value 类型的数据,可通过 HBase 和 Redis 等计划解决。对于全文检索场景,可通过搜索引擎如 ElasticSearch 解决。
微利用的典型架构如下: