微服务学习
微服务核心组件:
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
|