说微服务之前,先说下单体应用,将所有的功能都由一个应用实现,基本上没有外部依赖,这种就是单体应用,这种应用的开发和测试起来非常高效,但是随着业务的发展单体应用的代码会越来越多,代码的复杂度和逻辑也越来越高,应用维护起来非常困难,总的来说,大量业务代码的堆积会导致应用存在以下几个问题:
1.维护难:代码复杂度高,维护起来非常困难
2.定位问题难:很多代码揉到一起,出现问题难定位
3.可靠性差:牵一发动全身,每次改动都有可能导致所有服务不可用
4.伸缩性差:当容量不够时,只能进行横向扩容,无法根据有容量风险的模块进行垂直扩容
随着业务的发展,单体应用越来越庞大,此时我们就应该把单体应用的模块进行拆分,可以称为服务拆分,服务拆分后最终的应用层的形态就是,一个单体应用被拆分成了很多子应用,每个子应用都具备一些独立的能力,初级的微服务雏形就有了。微服务有哪些好处:
1.易于开发和维护:子应用相对比较小,外部依赖比较少,提供的能力都是某个领域的能力,开发和维护起来比较容易
2.可靠性高:某个子应用出现问题,对业务而言只是某个模块不可用,整体业务还是ok的
3.伸缩性好:可以针对特定的子应用进行扩容(从业务上看就是针对某个模块的能力进行扩容)
微服务拆分(应用的拆分)最难的是拆分的边界,即哪些服务应该放在在一起,哪些服务应该隔离开,高内聚低耦合是一个目标,指导原值可以可以有:领域模型、限定上下文、组织架构、康威定律,
实现微服务的技术框架在国外主要是SpringCloud 在国内主要是Doubbo框架













网友评论