微服务1
Microservices vs SOA: What’s the Difference?
什么是微服务?
basic
what’s micro: 一系列自治(autonomous)的服务(进程)共同完成任务: 拆分 and 治理
自治:
- 独立开发
- 独立运行:
- 独立完成某项任务
- 有自己的db,cache
- 独立部署:
- 运行在独立容器里
key characteristic:
- 高度解耦
- 去中心化管理
- 方便更新, 方便开发
micro vs soa:
-
粒度不同:
- soa: 粒度较大,服务于整个企业
- micro: 粒度较小,只服务于单个应用
-
通信方式:
- soa: 基于ebs
- micro: restful or grpc
-
部署方式:
- soa: 自建的发布平台
- micro: 基于cloud platform
micro vs distributed system:
same: 微服务是一种特殊的分布式系统 目标不同:
- micro: 解耦
- distrubited: 协作
micro vs k8s:
- micro 是一种架构范式,
- k8s是实现micro 的平台之一
architecture
-
gateway
-
platform service:
- 支撑服务: 与业务服务直接交互
- 平台服务:
- 编排服务: k8s
- 基础设施
-
bussiness service
- 基础服务
- 聚合服务
服务治理 (service governance)
what: 在微服务中,各个服务都是自治的,需要协调和管理好他们;
function based classification :
- 监测:
- 日志
- 链路跟踪
- 通信和路由
- 注册中心
- rpc
- gateway
- 发布与部署
- pipeline
- k8s
- 容错
- 服务熔断
- 服务降级
- 限流
implementation hierarchy clasification:
- application layr: 与应用直接打交道
- Infrastructure layer:
fault tolerence
what: 服务出现故障时候,仍然可以保持系统正常运作
methods:
- 限流
- 熔断
- 降级(degradation)
service divide
- 业务模块: 按照经验,与产品充分沟通,确定可能的边切
- 技术维度:
basic concept
1. service governance
control the service
- service register and discovery
cap
consitency: 每个节点都能获取最新信息 availability: 每个节点都能获取响应信息 partition tolerance: 容忍不同网络分区的通信延迟甚至坏掉 这是分布式系统最基本要求,必须满足
在网络不稳定的情况下, 要一致性必然导致某段时间内的不可用性 要可用性必然导致数据不一致性
eventually consistency
定义
将单个应用拆分成一系列的松耦合的小服务(arranges an application as a collection of loosely coupled services)
特点:
- 每个服务独立部署
- 各个服务可以用不同的语言实现
go micro
api
provide a single public entry for you services
implement a micro
- custom rpc
-
local balancer
-
service discovery
-
rpc framework
Dubbo | Montan | rpcx | gRPC | Thrift | |
---|---|---|---|---|---|
开发语言 | Java | Java | Go | 跨语言 | 跨语言 |
分布式(服务治理) | √ | √ | √ | × | × |
多序列化框架支持 | √ | √ (当前支持Hessian2、Json,可扩展) | √ | × (只支持protobuf) | × (thrift格式) |
多种注册中心 | √ | √ | √ | × | × |
管理中心 | √ | √ | √ | × | × |
跨编程语言 | × | × (支持php client和C server) | × | √ | √ |