微服务最近很热,一方面是Martinfowler大神的近期力作,一方面也为现在互联网基础应用架构的发展指出发展的方向。
一、微服务笔记
1. 微服务本质是SOA的一种实现,核心是把应用构建为一套服务。
2. 微服务不同于分层架构,它是基于业务的模块化架构。
3. 微服务的风格是什么?
微服务的架构风格是把一个独立的应用程序开发为一套小服务的集合,每个小服务运行在自己的进程中,并通过轻量级的通信机制(比如http)进行通信。这些服务围绕业务能力构建,并可以通过自动化的方式部署,而且不同的服务可以通过异构的系统实现。
4. 微服务更倾向于围绕业务功能对服务结构进行划分和拆解。可以参考康威定律来划分微服务团队。康威定律对组织架构的分配具有指导意义,系统的边界和团队的边界具有一定的对应性。
康威定律:任何组织设计的系统都会产生一种设计,其结构为其组织结构的副本。
5. 微服务强调终端,弱化通道。
微服务强调应用的松耦合和高内聚,并不在意统一的、规范的进程间通信标准,更倾向于简单的http,这样不会被标准绑架,可以灵活部署和复用。
6. 微服务的问题
(1) 自动化运维成本高
(2) 业务模式重构后,可能导致微服务架构的变化。
(3) 服务之间的容错和监控比较复杂。
二、附:SOA简介
SOA是面向服务的架构,任何架构都是演化而来,SOA也不例外,随着业务的发展SOA体系架构不断演化。
1. 定义:SOA是可以根据需要通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用的一种应用软件架构方式。服务层是SOA的基础,可以被应用层直接调用。
SOA是一种粗粒度松耦合的服务架构,服务之间通过简单、精确定义的接口进行通讯。
我的理解:SOA就是将业务拆分成服务的组合,服务可以独立存在和部署,服务之间松耦合,服务的组合形成具体的业务场景。
2. SOA特征
可重用:服务可以被用在多个场景;松耦合;明确的接口定义(WSDL);无状态的服务设计;基于开放标准
3. SOA目标
让系统变得更有弹性,以便灵活、快速的响应业务变化。
4. SOA架构中的元素
服务请求者、服务提供者、注册中心
三、附:伸缩立方
1. X轴伸缩:简单应用copy的方式通过负载均衡来路由
2. Y轴伸缩:将应用分成多份不同的服务,每个服务负责一个或者多个相关的功能。
3. Z轴伸缩:每个服务器负责一个数据子集,每个服务器运行的代码是一样的。比如:数据库分片。
Z轴的好处:
a. 每台只处理部分数据,提升缓存利用率,减少内存占用和IO。
b. 提升事务的可伸缩性。
c. 提升了故障隔离性,故障只造成部分数据不能访问。
Z轴的缺点:
a. 提升应用的复杂度
b. 数据的分区方案有时很棘手,如果遇到重新分区会很麻烦
c. 没有解决不断增加的开发和应用复杂度。(Y轴可以解决复杂度问题)
网友评论