|
1 | 1 | # 微服务治理策略
|
2 | 2 |
|
3 |
| -- Author: [HuiFer](https://github.com/huifer) |
4 |
| -- Description: 该文简单介绍微服务的治理策略以及应用技术 |
| 3 | +- Author:[HuiFer](https://github.com/huifer) |
| 4 | +- Description:该文简单介绍微服务的治理策略以及应用技术 |
5 | 5 |
|
6 | 6 | ## 服务的注册和发现
|
7 | 7 |
|
8 |
| -> 解决问题: 集中管理服务 |
| 8 | +解决问题:集中管理服务 |
9 | 9 |
|
10 |
| -> 解决方法: eureka 、zookeeper |
| 10 | +解决方法: |
| 11 | + |
| 12 | +- Eureka |
| 13 | +- Zookeeper |
11 | 14 |
|
12 | 15 | ## 负载均衡
|
13 | 16 |
|
14 |
| -> 解决问题: 降低服务器硬件压力 |
| 17 | +解决问题:降低服务器硬件压力 |
| 18 | + |
| 19 | +解决方法: |
15 | 20 |
|
16 |
| -> 解决方法: nginx 、 Ribbon |
| 21 | +- Nginx |
| 22 | +- Ribbon |
17 | 23 |
|
18 | 24 | ## 通讯
|
19 | 25 |
|
20 |
| -> 解决问题: 各个服务之间的沟通桥梁 |
| 26 | +解决问题:各个服务之间的沟通桥梁 |
| 27 | + |
| 28 | +解决方法: |
21 | 29 |
|
22 |
| -> 解决方法 : |
23 |
| -> |
24 |
| -> - 同步消息 |
25 |
| -> |
26 |
| -> 1. rest |
27 |
| -> 1. rpc |
28 |
| -> |
29 |
| -> - 异步消息 |
30 |
| -> |
31 |
| -> 1. MQ |
| 30 | +- REST(同步) |
| 31 | +- RPC(同步) |
| 32 | +- MQ(异步) |
32 | 33 |
|
33 | 34 | ## 配置管理
|
34 | 35 |
|
35 |
| -> 解决问题: 随着服务的增加配置也在增加, 如何管理各个服务的配置 |
| 36 | +解决问题:随着服务的增加配置也在增加,如何管理各个服务的配置。 |
36 | 37 |
|
37 |
| -> 解决方法: nacos 、 spring cloud config 、 Apollo |
| 38 | +解决方法: |
| 39 | + |
| 40 | +- Nacos |
| 41 | +- Spring Cloud Config |
| 42 | +- Apollo |
38 | 43 |
|
39 | 44 | ## 容错和服务降级
|
40 | 45 |
|
41 |
| -> 解决问题: 在微服务当中,一个请求经常会涉及到调用几个服务,如果其中某个服务不可以,没有做服务容错的话,极有可能会造成一连串的服务不可用,这就是雪崩效应. |
| 46 | +解决问题:在微服务当中,一个请求经常会涉及到调用几个服务,如果其中某个服务不可以,没有做服务容错的话,极有可能会造成一连串的服务不可用,这就是雪崩效应。 |
42 | 47 |
|
43 |
| -> 解决方法: hystrix |
| 48 | +解决方法: |
44 | 49 |
|
45 |
| -## 服务依赖关系 |
| 50 | +- Hystrix |
46 | 51 |
|
47 |
| -> 解决问题: 多个服务之间来回依赖, 启动关系的不明确 |
| 52 | +## 服务依赖关系 |
48 | 53 |
|
49 |
| -> 解决方法: |
| 54 | +解决问题:多个服务之间来回依赖,启动关系的不明确。 |
50 | 55 |
|
51 |
| -> 1. 应用分层: 数据层, 业务层 数据层不需要依赖业务层, 业务层依赖数据, 规定上下依赖关系避免循环圈 |
| 56 | +解决方法:应用分层。 |
52 | 57 |
|
53 | 58 | ## 服务文档
|
54 | 59 |
|
55 |
| -> 解决问题: 降低沟通成本 |
| 60 | +解决问题:降低沟通成本 |
56 | 61 |
|
57 |
| -> 解决方法: swagger 、 java doc |
| 62 | +解决方法: |
| 63 | + |
| 64 | +- Swagger |
| 65 | +- Java doc |
58 | 66 |
|
59 | 67 | ## 服务安全问题
|
60 | 68 |
|
61 |
| -> 解决问题: 敏感数据的安全性 |
| 69 | +解决问题:敏感数据的安全性 |
| 70 | + |
| 71 | +解决方法: |
62 | 72 |
|
63 |
| -> 解决方法: oauth 、 shiro 、 spring security |
| 73 | +- Oauth |
| 74 | +- Shiro |
| 75 | +- Spring Security |
64 | 76 |
|
65 | 77 | ## 流量控制
|
66 | 78 |
|
67 |
| -> 解决问题: 避免一个服务上的流量过大拖垮整个服务体系 |
| 79 | +解决问题:避免一个服务上的流量过大拖垮整个服务体系 |
| 80 | + |
| 81 | +解决方法: |
68 | 82 |
|
69 |
| -> 解决方法: Hystrix |
| 83 | +- Hystrix |
70 | 84 |
|
71 | 85 | ## 自动化测试
|
72 | 86 |
|
73 |
| -> 解决问题: 提前预知异常, 确定服务是否可用 |
| 87 | +解决问题:提前预知异常,确定服务是否可用 |
74 | 88 |
|
75 |
| -> 解决方法: junit |
| 89 | +解决方法: |
76 | 90 |
|
77 |
| -## 服务上线, 下线的流程 |
| 91 | +- junit |
78 | 92 |
|
79 |
| -> 解决问题: 避免服务随意的上线下线 |
| 93 | +## 服务上线,下线的流程 |
80 | 94 |
|
81 |
| -> 解决方法: 新服务上线需要经过管理人员审核. 服务下线需要告知各个调用方进行修改, 直到没有调用该服务才可以进行下线. |
| 95 | +解决问题:避免服务随意的上线下线 |
| 96 | + |
| 97 | +解决方法:新服务上线需要经过管理人员审核,服务下线需要告知各个调用方进行修改,直到没有调用该服务才可以进行下线。 |
82 | 98 |
|
83 | 99 | ## 兼容性
|
84 | 100 |
|
85 |
| -> 解决问题: 服务开发持续进行如何做到兼容 |
| 101 | +解决问题:服务开发持续进行如何做到兼容。 |
86 | 102 |
|
87 |
| -> 解决方法: 通过版本号的形式进行管理, 修改完成进行回归测试 |
| 103 | +解决方法:通过版本号的形式进行管理,修改完成进行回归测试。 |
88 | 104 |
|
89 | 105 | ## 服务编排
|
90 | 106 |
|
91 |
| -> 解决问题: 解决服务依赖问题的一种方式 |
| 107 | +解决问题:解决服务依赖问题的一种方式 |
| 108 | + |
| 109 | +解决方法: |
92 | 110 |
|
93 |
| -> 解决方法: docker & k8s |
| 111 | +- Docker |
| 112 | +- K8s |
94 | 113 |
|
95 | 114 | ## 资源调度
|
96 | 115 |
|
97 |
| -> 解决问题: 每个服务的资源占用量不同, 如何分配 |
| 116 | +解决问题:每个服务的资源占用量不同,如何分配 |
| 117 | + |
| 118 | +解决方法: |
98 | 119 |
|
99 |
| -> 解决方法: JVM 隔离、classload 隔离 ; 硬件隔离 |
| 120 | +- JVM 隔离 |
| 121 | +- Classload 隔离 |
| 122 | +- 硬件隔离 |
100 | 123 |
|
101 | 124 | ## 容量规划
|
102 | 125 |
|
103 |
| -> 解决问题: 随着时间增长, 调用逐步增加, 什么时候追加机器 |
| 126 | +解决问题:随着时间增长,调用逐步增加,什么时候追加机器。 |
104 | 127 |
|
105 |
| -> 解决方法: 统计每日调用量和响应时间, 根据机器情况设置阈值, 超过阈值就可以追加机器 |
| 128 | +解决方法:统计每日调用量和响应时间,根据机器情况设置阈值,超过阈值就可以追加机器。 |
0 commit comments