01.什么是微服务架构
两个大牛:马丁福勒(提出微服务架构)、前Netflix的架构总监Andrew
马丁福勒认为微服务是一种架构风格,有以下六个特点:
自己总结:微服务是一种架构风格,把功能按照业务拆分成一组组小的服务,每个服务有独立的进程、可以独立部署。
Andrew认为的微服务有以下三个特点:
即松散耦合、面向服务的架构(本质上还是soa,只不过更“落地”)、有界上下文(每个团队可以维护自己的数据源)。
02.架构师如何权衡微服务的利弊
强模块化边界:刚开始用类的方式做模块化,后面用组件的方式写类库来做模块化(可重用)。微服务的层次更高一些,用服务的形式做模块化,其它人通过调用服务而不需要引入jar包。
分布式复杂性:服务数量多,难以全部理解。
最终一致性:数据分散治理,每个服务的团队有自己的数据拷贝,A团队修改了订单数据可能要同步到其它团队的相关数据。
03.康威法则和微服务给架构师怎样的启示
康威法则是一个名叫康威的程序员在1967年提出的。
原话:设计系统的组织,其产生的设计和架构等价于组织的组织架构。(就是说,开发团队按业务服务划分)
康威法则也可以看作是微服务的一个理论基础。
04.企业应该在什么时候开始考虑引入微服务
monolith:单体应用
“单块优先”。一开始不要直接上微服务。随着规模增大,逐步根据需要抽离模块。(有些架构是设计出来的,有些是演化出来的。)
05.什么样的组织架构更适合微服务
根据前面的康威法则细化组织架构。
图上方的是传统的组织方式,沟通成本高,反馈问题的周期也长。
图下方的是基于微服务的跨职能组织方式。
06.如何理解阿里巴巴提出的微服务中台战略
07.如何给出一个清晰简洁的服务分层方式
左边分了两层,
08.微服务总体技术架构体系是怎样设计的
09.微服务最经典的三种服务发现机制
第一种是传统的基于LB的模式。
第二种是进程内LB的模式。
第三种是主机独立LB的模式。
10.微服务 API 服务网关(一)原理