
# 简介
## 背景
互联网时代,在极端情况下,每天都有新需求要开发上线。随着代码量及团队成员的增加, 传统单体式架构的弊端日益凸显,严重制约了业务的快速创新和敏捷交付,与互联网所追求的 “唯快不破”的目标越来越远。这就是微服务架构兴起的时代大背景。
### 微服务目标
* 开发框架更加敏捷、轻快、优雅
* 从 SOA 到微服务的持续演进
* 结合 DevOps,打通开发、测试、运维三条线,实现整个流程的畅通、自动化
### 微服务设计原则
* 服务无状态,任意打包任意部署,独立部署
* 轻量级通信
* API 网关独立,不对底层服务进行依赖
* 基础设施自动化
* 高度可观察
* 去中心化
* 隐藏内部实现细节
* 调用失败隔离
## Zebra 微服务架构
### 架构图如下

### 组件说明
| 组件 | 说明 |
| :--- | :--- |
| 配置中心 | 微服务配置统一管理、版本支持、配置分离,保证服务无状态 |
| 注册中心 | 服务自动注册、自动发现、负载均衡、异常保护、异常通报下发、服务降级 |
| 服务中心 | 展示服务状态,服务依赖关系,服务 API 管理,监控展示。 |
| 监控中心 | 基于 Prometheus 协议,实现应用监控、异常上报、功能主动监控 |
| Zebra微服务 | 基于 JDK 1.8 和 SpringBoot 的基础上进行研发,极大简化开发。 |
### Zebra 微服务开发框架
基于 JDK 1.8和 SpringBoot 的基础上进行研发,极大简化开发。具有如下功能:
1. 采用grpc拦截器形式进行权限管理,服务接口授权;
2. 采用令牌池方案,进行服务端并发控制;
3. 采用阿里巴巴 TtlExecutors 线程池技术,管理业务线程,保障线程数据上线文不窜包;
4. 使用线程池技术,当服务并发量超过服务最大线程是,服务过载快速失败;
5. 采用 opentracing 标准,进行调用链分析埋点;
6. 采用 JDK1.8 CompletableFuture 技术超时管理、 实现高性能异步调用和实现高性能延迟返回;
7. 采用 SpringBoot 动态配置技术,简化数据库、缓存、消息队列访问;
8. 基于 gRPC 流模式技术,实现流模式支持,实现服务推送;
9. 基于 TTL 技术实现跨进程上下文传递;
10. 自研延时加载技术,实现 Slow Start 特性,避免服务启动流量直接打到服务上;
11. 基于netty优雅下线技术以及 JDK 推出钩子技术实现架构优雅下线,避免停服务时有请求未处理完。
- 简介
- 入门
- Docker方式
- 手工方式
- 环境搭建
- 简述
- 初始化服务器
- 安装 Etcd
- 初始化数据库
- 安装配置中心
- 安装服务中心
- 安装监控中心
- 安装API网关
- 开发第一个微服务
- 简述
- 准备工作
- 接口定义
- 实现
- 配置
- 部署
- 验证
- 微服务开发
- 服务调用
- 服务上下文
- 日志
- 高级特性
- 范化调用
- 异步调用
- ACL 控制
- 慢启动
- 消息大小
- 组件使用
- 简述
- 缓存
- MyBatis
- RocketMQ
- 分库分表
- 读写分离
- 分布式事务
- 分布式锁
- 运维管理
- 服务依赖
- 服务查询
- 服务方法查询
- 配置中心
- API网关配置
- 流量控制
- 简述
- 限流
- 熔断
- 系统保护
- 白名单
- 黑名单
- 监控
- 主动探测
- 调用链
- 日志开关
- 最佳实践
- 常见问题
- 深入 Zebra
- 架构
- 通信协议
- 路标
