十三、微服务学习笔记-微服务概念(做有生命的产品而不是项目)

一、什么是微服务

1、微服务架构是一种架构思想,架构就是为了解耦,实际的开发方式采用分布式系统开发。

2、业务领域定义了边界,可以参考DDD (领域驱动设计),如何划分领域?

3、系统架构需要遵循的三个标准:

(1)提高敏捷性:及时响应业务需求,促进企业发展(CAP)

(2)提升用户体验:提升用户体验,减少用户流失

(3)降低成本:降低增加产品、客户或业务方案的成本

 二、微服务架构

1、单体开发架构

2、微服务架构

三、微服务实践

1、这么多服务,客户端如何访问?

统一的入口,通过API网关

2、这么多服务,如何通信?

两种

  1、同步                  对内RPC,对外 REST,json序列化两次,需要先转成json字符串,在将json字符串转二进制

                 1.1 HTTP  ->跨防火墙

                 1.2 RPC  -> 传输效率高,压缩,通过序列化,反序列化技术对数据进行压缩

       2、异步

                 2.1 消息队列

3、这么多服务,如何治理?

服务注册与发现服务注册中心,服务IP列表

4、这么多服务,服务挂了怎么办?

网络是不可靠

 

(1)重试机制

(2)限流

(3)熔断机制(保险丝,超时断开,从而保证服务器不奔溃,限制并发量)

(4)负载均衡

(5)降级(本地缓存,保证主核心业务)

 

 

 四、微服务的设计

 客户端发现模式使用的是zookeeper,服务端发现模式使用的是eureka

1、聚合器微服务设计模式

 

 

2、代理微服务设计模式(API网关)

 

 

3、链式微服务设计模式

 

 

4、分支微服务设计模式

 

 

5、数据共享服务设计模式

 

 

6、异步消息传递微服务设计模式(消息队列)

 

 五、新架构新起点(有道无术,术尚可求,有术无道,止于术)

对于微服务架构,最重要的是思维的转变,技术不是问题,思想才是王道,对于做微服务开发的几点建议:

1、应用程序的核心是业务逻辑,按照业务或客户需求组织资源(这是最难的)

2、做有生命的产品,而不是项目

3、全栈化

4、后端服务贯彻Single Responsibility Principle (单一职责原则),一个类只做一种事,一个方法只做一件事

5、VM->docker->kubernetes->lstio

6、DevOps(自动化运维),AI DevOps(智能自动化运维)

posted @ 2020-08-27 12:58  榕树下的回忆  阅读(152)  评论(0编辑  收藏  举报