一句话导读
微服务架构的演进路径:单体应用->单体应用集群部署->SOA->微服务架构
目录
一、为何会有微服务架构
1. 什么是单体应用
顾名思义,单体应用就是只有一个应用,覆盖了所有业务模块,包含前端、后台、数据库等。独立部署在web容器中,对外提供服务。
2. 单体应用的特点
特点:部署单元单一、紧耦合、集中管理、模块边界不清晰
优点:容易部署(只用部署一个)、测试方便、技术单一、用人成本低
缺点:单点故障、启动慢、容错性查、可扩展性低、复杂度越来越高、并发量有限
3. 单体应用的部署模式
Nginx+Tomcat,Apache HTTP Servr+ Tomcat(weblogic、WebSphere、JBoss、Jetty)等等。
二、单体应用的如何发展到soa
1. 发展概述
随着访问量不断增大,单体应用越来越力不从心,大家想到的就是通过集群来提高应用的并发能力,集群确实能解决一部分问题,然而随着并发越来越高,数据库逐渐成为了瓶颈,扩大数据库连接数、提升数据库机器性能再到数据库做ha,再到数据库分库分表。到目前为止还是单体应用,业务模块并没有做拆分,当业务越来越复杂,维护成本越来越高,快速迭代越来越难实现,多团队协作成本越来越高,大家就逐渐想到的就是将各个模块做拆分,大家互不干扰,每个模块逐渐发展成一个独立系统,系统调用越来越复杂,甚至错乱无章,此时SOA面向服务架构就逐渐形成。
2. SOA为什么要向微服务转变
SOA全英文是Service-Oriented Architecture,中文意思是面向服务编程,是一种思想,一种方法论,一种分布式的服务架构(具体可以百度)。主要是解决多服务凌乱不堪,解决服务复杂度的问题,也可以说是服务治理。随着业务的不断发展,系统不断增多,服务间调用越来越多,就需要有人来管理这些服务调用,否则大家都不知道对方有什么能力,不利于业务的发展,其中ESB就是SOA的最好实现,ESB的概念很早就有,但是在国内快速使用的还是在2011、12年间,电信运营商的系统越来越多,才引入了企业数据总线的概念,所有系统的服务(接口)都注册到ESB上,其他服务只要调用ESB提供的接口即可,这种中心化的设计模式,也带来了一定的问题,就是流量全部集中到总线上,总线的性能瓶颈成了整个系统群的瓶颈。当前业务发展的迅速、高并发、高可用、高性能的要求也越来越迫切,同时业务需求变化过快,也要求服务能够快速迭代、快速交付、敏捷开放。这就要求每个团队负责的东西相对独立,各自互相解耦,大家就将原来的服务继续做细化拆分,形成独立的、松耦合的、可快速迭代的微服务,其实归根结底微服务架构其实只是SOA的一种实现,不过他拆分的粒度更细、引入了服务治理组件,去中心化,结合容器技术,实现devops自动化部署与运维,实现敏捷开发,快速响应需求,小步快跑,高度适应业务变化发展。
三、举例说明:
1. 电信行业BOSS系统发展史
BOSS(Business Operation Support System)是电信行业中用于支持运营和业务管理的重要系统。它负责处理业务操作、计费、客户关系管理、订单管理、资费管理等关键业务流程。下面是BOSS系统的发展史:
初期系统(20世纪70年代至90年代):BOSS系统最初是简单的计费系统,用于处理电话通话的计费。这些系统主要基于传统的电话网络,用于跟踪通话时长和计算费用。
图1 单体应用
综合计费系统(20世纪90年代):随着电信业务的扩展和发展,BOSS系统逐渐从单一的计费系统演变为综合计费系统。这些系统开始支持更多的业务,如漫游计费、数据业务计费等。
图2 单应用多模块
业务支持系统(21世纪初):BOSS系统进一步发展为更综合的业务支持系统。它不仅处理计费,还涉及客户关系管理(CRM)、订单管理、营销推广等多个方面。这使得运营商能够更好地管理客户关系和提供个性化的服务。
图3 单应用多模块
集成和虚拟化(21世纪):随着电信网络的发展和技术的进步,BOSS系统开始向更加集成和虚拟化的方向发展。传统的BOSS系统往往由多个独立的子系统组成,而现代的BOSS系统采用了更加集成的架构,使得各个业务模块能够更好地协同工作。
图4 多系统并存
图5 多系统间调用
图6 数据总线模式
微服务架构(21世纪):随着微服务的发展,BOSS系统也逐渐向微服务方向转型,服务拆分的更细致,提供更高的可用性与灵活性,为业务快速发展与迭代提供了强有力的支撑。
图7 微服务架构