从应用扩展说起
AKF扩展立方体,是一家叫AKF的公司的技术专家抽象总结的应用扩展的三个维度。理论上按照这三个扩展模式,可以将一个单体系统,进行无限扩展。
- X 轴 :服务和数据的水平复制和克隆,将单体系统或服务多运行几个实例,成为集群加负载均衡的模式。
- Y 轴 :功能分解和细分(或微服务)业务拆分,将不同职能的模块分成不同的服务。从Y轴这个方向扩展,才能将巨型应用分解为一组不同的服务,例如订单管理中心、商品信息管理中心、库存管理中心等等。
- Z 轴 :沿客户边界的服务和数据分区-分片/窗格,基于用户、请求或者数据分割,如:分库分表(分库是将关系紧密的表放在一台数据库服务器上,分表是因为一张表的数据太多,需要将一张表的数据通过hash放在不同的数据库服务器上)。
有了AKF扩展立方体的知识,我们再简单了解下应用架构演进史:
- 单一应用架构:当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。
- 垂直应用架构:当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。
- 分布式服务架构:当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。
- 流动计算架构:当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。
漫谈微服务架构
1,什么是微服务?
定义:微服务(也叫微服务架构),是一种架构风格,在微服务的世界里,单个应用程序由许多松散耦合且独立部署的较小服务组成。服务通常具有如下特点:
- 有自己的技术栈库、数据结构和数据库且独立部署、维护;
- 通过REST api、事件流和消息代理的组合与其它服务进行通信;
- 聚焦单一业务功能任务的实现。
2,微服务架构有何特征及优势?
3,Monolithic and SOA vs. Microservice
- MicroService可以看作SOA的扩展或者演进,它们都围绕业务逻辑来构建服务,同时也做出了一些改进:
- 去除了重量级的ESB
- 服务划分的粒度更加精细,有自己的数据库,服务间相互独立,可独立部署、按需伸缩
- 去中心化管理,强调服务自治
- Monolithic与Microservice 👇
4,相关技术和工具
- Containers, Docker, and Kubernetes:容器没有自己操作系统的开销,它们比传统的虚拟机更小、重量更轻,可以更快地上下移动,这使它们与微服务体系结构中更小、更轻的服务完美匹配。随着服务和容器的激增,协调和管理大型容器组迅速成为一个关键挑战。Kubernetes已经成为世界上最流行的容器编排技术之一。
- DevOp 👇