# 微服务治理策略

- Author：[HuiFer](https://github.com/huifer)
- Description：该文简单介绍微服务的治理策略以及应用技术

## 服务的注册和发现

解决问题：集中管理服务

解决方法：

- Eureka
- Zookeeper

## 负载均衡

解决问题：降低服务器硬件压力

解决方法：

- Nginx
- Ribbon

## 通讯

解决问题：各个服务之间的沟通桥梁

解决方法：

- REST（同步）
- RPC（同步）
- MQ（异步）

## 配置管理

解决问题：随着服务的增加配置也在增加，如何管理各个服务的配置。

解决方法：

- Nacos
- Spring Cloud Config
- Apollo

## 容错和服务降级

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

解决方法：

- Hystrix

## 服务依赖关系

解决问题：多个服务之间来回依赖，启动关系的不明确。

解决方法：应用分层。

## 服务文档

解决问题：降低沟通成本

解决方法：

- Swagger
- Java doc

## 服务安全问题

解决问题：敏感数据的安全性

解决方法：

- Oauth
- Shiro
- Spring Security

## 流量控制

解决问题：避免一个服务上的流量过大拖垮整个服务体系

解决方法：

- Hystrix

## 自动化测试

解决问题：提前预知异常，确定服务是否可用

解决方法：

- junit

## 服务上线，下线的流程

解决问题：避免服务随意的上线下线

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

## 兼容性

解决问题：服务开发持续进行如何做到兼容。

解决方法：通过版本号的形式进行管理，修改完成进行回归测试。

## 服务编排

解决问题：解决服务依赖问题的一种方式

解决方法：

- Docker
- K8s

## 资源调度

解决问题：每个服务的资源占用量不同，如何分配

解决方法：

- JVM 隔离
- Classload 隔离
- 硬件隔离

## 容量规划

解决问题：随着时间增长，调用逐步增加，什么时候追加机器。

解决方法：统计每日调用量和响应时间，根据机器情况设置阈值，超过阈值就可以追加机器。
