1.1单体架构应用的困境
在java开发中,往往是将项目打包成war,部署到tomcat容器中,单体架构的缺点有哪些?
one, 随着业务扩张,开发、部署、运维会变得更难
tow,单体架构会越来越不稳定。一方面:不断增加的需求 另一方面:牵一发而动全身
three,单体架构应用很难接受或者切换到其它框架、语言
four,单体架构对开发者来说,需要了解更多的东西
five,部署上难以进行水平扩展
1.2 如何定义微服务
微服务架构从结构上来来看就是将一个应用拆分成多个松耦合的服务,这些服务之间通过某种协议(Rest,Rpc等)进行相互协作,完成单体架构下的业务功能,但提供更灵活的部署模式,更容易扩展,降低了开发、运维上的复杂度
微服务的核心思想就是 分而治之
1.3 微服务架构的优点
one,松耦合\独立 服务之间相互独立,编译打包部署各自为政、互不干涉
two,抽象 一个微服务对其数据结构和数据源具有绝对控制权
three ,应对需求多样性,微服务可以让我们轻松应对不同客户的特殊需求,通过定义良好的接口,可以让不同的微服务承担不同的职责,同时快速部署上线能力可以让用户需求尽早实现。
four,更高的可用性和弹性:微服务是一个去中心化的应用,每一个微服务都可以随时上线和下线。某个服务出现问题不会对其他服务造成影响
1.4 微服务架构的缺点
one,可用性降低,高度依赖于远程调用,一旦网络或者服务出现问题,将造成连锁反应
two,处理分布式事物复杂
three,全能对象阻止业务拆分,如电商的订单处理,很难单独拆成一个服务
four,学习难度大
five,部署复杂
微服务是一门艺术,市场上并没有最佳实践,要靠团队实践
1.5 微服务的拆分粒度
简单一句话,并不是越细越好,要把握尺度,往往取决于这个服务是不是承担的过多的职责
1.6不应使用微服务架构的情形
one ,构建分布式架构非常吃力时
tow,服务器蔓延时
three,采用小型应用、快速产品原型时
four,对数据一致要求高时