huifer-micro-service-governance.md 2.4 KB
Newer Older
1 2
# 微服务治理策略

Y
yanglbme 已提交
3 4
- Author:[HuiFer](https://github.com/huifer)
- Description:该文简单介绍微服务的治理策略以及应用技术
5

Q
Qimiao Chen 已提交
6
## 服务的注册和发现
7

Y
yanglbme 已提交
8
解决问题:集中管理服务
9

Y
yanglbme 已提交
10 11 12 13
解决方法:

- Eureka
- Zookeeper
14 15 16

## 负载均衡

Y
yanglbme 已提交
17 18 19
解决问题:降低服务器硬件压力

解决方法:
20

Y
yanglbme 已提交
21 22
- Nginx
- Ribbon
23 24 25

## 通讯

Y
yanglbme 已提交
26 27 28
解决问题:各个服务之间的沟通桥梁

解决方法:
29

Y
yanglbme 已提交
30 31 32
- REST(同步)
- RPC(同步)
- MQ(异步)
33 34 35

## 配置管理

Y
yanglbme 已提交
36
解决问题:随着服务的增加配置也在增加,如何管理各个服务的配置。
37

Y
yanglbme 已提交
38 39 40 41 42
解决方法:

- Nacos
- Spring Cloud Config
- Apollo
43 44 45

## 容错和服务降级

Y
yanglbme 已提交
46
解决问题:在微服务当中,一个请求经常会涉及到调用几个服务,如果其中某个服务不可以,没有做服务容错的话,极有可能会造成一连串的服务不可用,这就是雪崩效应。
47

Y
yanglbme 已提交
48
解决方法:
49

Y
yanglbme 已提交
50
- Hystrix
51

Y
yanglbme 已提交
52
## 服务依赖关系
53

Y
yanglbme 已提交
54
解决问题:多个服务之间来回依赖,启动关系的不明确。
55

Y
yanglbme 已提交
56
解决方法:应用分层。
57 58 59

## 服务文档

Y
yanglbme 已提交
60
解决问题:降低沟通成本
61

Y
yanglbme 已提交
62 63 64 65
解决方法:

- Swagger
- Java doc
66 67 68

## 服务安全问题

Y
yanglbme 已提交
69 70 71
解决问题:敏感数据的安全性

解决方法:
72

Y
yanglbme 已提交
73 74 75
- Oauth
- Shiro
- Spring Security
76 77 78

## 流量控制

Y
yanglbme 已提交
79 80 81
解决问题:避免一个服务上的流量过大拖垮整个服务体系

解决方法:
82

Y
yanglbme 已提交
83
- Hystrix
84 85 86

## 自动化测试

Y
yanglbme 已提交
87
解决问题:提前预知异常,确定服务是否可用
88

Y
yanglbme 已提交
89
解决方法:
90

Y
yanglbme 已提交
91
- junit
92

Y
yanglbme 已提交
93
## 服务上线,下线的流程
94

Y
yanglbme 已提交
95 96 97
解决问题:避免服务随意的上线下线

解决方法:新服务上线需要经过管理人员审核,服务下线需要告知各个调用方进行修改,直到没有调用该服务才可以进行下线。
98 99 100

## 兼容性

Y
yanglbme 已提交
101
解决问题:服务开发持续进行如何做到兼容。
102

Y
yanglbme 已提交
103
解决方法:通过版本号的形式进行管理,修改完成进行回归测试。
104 105 106

## 服务编排

Y
yanglbme 已提交
107 108 109
解决问题:解决服务依赖问题的一种方式

解决方法:
110

Y
yanglbme 已提交
111 112
- Docker
- K8s
113 114 115

## 资源调度

Y
yanglbme 已提交
116 117 118
解决问题:每个服务的资源占用量不同,如何分配

解决方法:
119

Y
yanglbme 已提交
120 121 122
- JVM 隔离
- Classload 隔离
- 硬件隔离
123 124 125

## 容量规划

Y
yanglbme 已提交
126
解决问题:随着时间增长,调用逐步增加,什么时候追加机器。
127

Y
yanglbme 已提交
128
解决方法:统计每日调用量和响应时间,根据机器情况设置阈值,超过阈值就可以追加机器。