2020-08-08- 第十周作业
作业一
根据微服务框架Dubbo的架构图,画出Dubbo进行一次微服务调用的时序图。
答:
Dubbo微服务框架核心三个角色是:服务注册中心,服务消费者和服务提供者。其调用一次微服务的步骤和时序图如下所示:
(1)服务消费者调用服务接口,Dubbo框架通过接口访问代理,将接口请求传递给服务框架客户端。由框架客户端执行真正的请求调用。
(2)框架客户端首先从服务提供者列表中查找接口所在地址,如果没有找到则会向注册中心服务器进行查询,注册中心将服务提供者列表返回。
(3)然后客户端通过负载均衡策略选择一个服务提供者,通过远程通讯模块与该服务提供者服务器进行通信,将请求发送给这个服务器。
(4)服务提供者服务器通过远程通讯模块接收到消费者发送的请求
(5)通过服务调用线程发送给服务提供者程序,程序调用之后将返回值按照原路进行返回。
作业二
关于微服务架构(中台架构、领域驱动设计、组件设计原则),你有什么样的思考和认识?
答:
微服务架构就是将庞大的业务系统进行横向或者纵向地切分为若干个微服务系统,这些微服务系统之间通过远程通讯模块进行相互调用。其目的有(1)降低系统模块之间的耦合性,便于开发部署;(2)单一职责原则,每个模块仅负责自己需要负责的那部分内容,不会与其他模块重叠;(3)服务注册与负载均衡机制使得微服务集群部署更方便简单,可以按需增加节点,避免不必要的资源浪费。
中台架构并非一种架构模式,确切来说应该是一种方法思想。其思想就是将各若干个子系统间共性的部分进行提炼归纳形成一个中台,从而实现业务重用以及数据共享。与微服务架构不同,微服务致力于将业务系统进行拆分,而中台架构则是希望根据业务需求将子系统进行提炼强化,以便开拓新的业务。
领域驱动设计是一种基于领域(业务)的软件设计方法,比如电商属于一个领域,其内部常见的订单、支付、物流等业务都是一个个的子领域,按照领域和子领域对软件进行业务系统划分,并据此进行设计。这种思想根微服务架构的纵向切分很类似,微服务的纵向切分就是将一个大应用按照业务功能拆分为多个小应用。
不论是微服务架构、中台架构,还是领域驱动设计,最终得到的系统或子系统均可看作一个组件,解决共性问题,且将系统模块间进行解耦,是符合组件设计原则。
评论