微服务学习笔记(一)

微服务学习

微服务核心组件:
1
2
3
4
5
6
7
- 1.服务注册与发现
- 2.远程过程调用RPC
- 3.分布式配置中心
- 4.微服务网关
- 5.微服务的容错处理与负载均衡
- 6.统一认证与授权
- 7.分布式链式追踪
微服务设计的6大原则:
1
2
3
4
5
6
- 1.高内聚,低耦合
- 2.高度自治
- 3.以业务为中心
- 4.弹性设计
- 5.日志与监控
- 6.自动化
微服务架构:

将单体应用转化为多个可以;独立开发;独立部署;独立运行;和独立维护的服务或者应用的集合;

微服务的理解:

是指将大型复杂软件应用拆分成多个简单应用;每个应用描述着一个小业务;系统中的应用可被独立部署;每个微服务仅关注于完成一个业务;单一原则、分而治之、模块化;

微服务的特点:
1
2
3
4
- 1.独立开发;独立部署;独立运行
- 2.微服务之间采用RESTful API或者RPC等协议通信
- 3.微服务遵循单一原则
- 4.微服务一般使用容器部署
微服务的缺点:
1
2
3
- 1.服务拆分过多;服务治理成本较高;不利于系统维护;
- 2.服务之间相互依赖;有可能形成复杂的依赖链条;出现服务雪崩效应;
- 3.服务实例之间交互需要处理分布式事务,调用幂等和重试等问题;
SOA和微服务的区别:
1
- SOA注重的是系统集成;而微服务关注的是完全分离;
Go语言的微服务框架:
1
go-kit 应用程序架构由三部分组成:传输层;接口层;服务层;
1
2
go-micro
插件化的RPC微服务框架;提供了(服务发现);(负载均衡);(同步传输);(异步通信);(事件驱动); 组件化的微服务框架;组件是分层的;上层基于下层功能继续向上提供服务;
go-micro框架中的组件介绍(7个)可插拔的架构设计理念:
1
2
3
4
5
6
7
- Registry:服务发现组件(提供服务发现机制;解析服务名称至服务地址;目前支持的注册中心;etcd;consul;zookeeper)
- Selector:基于Registry的客户端负载均衡组件;client组件使用selector组件从Registry返回的服务列表中进行负载均衡选择;
- Broker:发布和订阅组件;服务之间基于消息中间件的异步通信方式;kafka;rabbitMQ等;
- Transport:服务之间同步通信方式
- Codec:服务之间的编码和解码组件
- Server:服务主体,对外提供 统一的服务请求入口
- Client:提供访问微服务的客户端;
go-kit和go-micro的区别:
1
2
go-kit 是一个微服务的标准库;go-kit提供了独立的包;通过这些包开发者可以组件自己的应用程序;
go-micro 是一个面向微服务的可插拔RPC框架;它尝试使用组件的方式简化分布式系统之间的通信;
微服务设计的6大原则
1
2
3
4
5
6
- 1.(高内聚,低耦合)单一职责;轻量级通信;服务之间的契约
- 2.(高度自治)能独立开发;部署;发布;进程隔离;独立的代码库;流水线;
- 3.(以业务为中心)每个微服务代表了特定的业务逻辑;能更快的响应业务变化;
- 4.(弹性设计)容错;服务降级;
- 5.(日志与容错)日志集合;监控和警告;
- 6.(自动化)持续集成;持续交付;
领域驱动设计(DDD)
领域驱动设计是一种思想;一种方法论;对软件系统进行合理拆分;最终的目标还是,高内聚,低耦合;
领域驱动设计分层 (微服务的划分粒度)
1
2
3
4
- 1.用户界面(表现层或接口层)   User interface
- 2.应用层 Application
- 3.领域层 Domain
- 4.基础实施层 Infrastructure