Istio-如何拆分微服务

概述

目前微服务的拆分方式众说纷纭,每家的拆分方式也不尽相同,每家说的也都很有道理,但可惜没有 银弹(没有简单的方式解决复杂的软件工程问题),在这种情况下我们只需明确 架构是演化来的,不是设计来的 这一准则便不会让我们陷入纠结的泥潭,既然如此那我们随心所欲的拆分就好了嘛,不用有太大的心里负担,以下咱们根据微服务架构的设计模式还是能够提炼出一些基本的拆分方式供我们选择和借鉴

拆分粒度

我个人认为拆分粒度越细越好,咱们可以考虑一种面向未来的架构方式去做拆分,目前下一代架构基本就定在 Servless 这一概念上了(函数即服务,函数计算,一个函数一个服务),拆分的粒度足够细的话在未来转型云架构时会变的轻松许多并且咱们势必还要实现 全程异步通信全服务无状态

拆分方法

根据业务拆分

将系统中的业务模块按照职责范围识别出来,每个单独的业务模块拆分为一个独立的服务,例如,做一个电商系统,可以划分为 商品、交易、用户 3 个服务,也可以划分为商品、订单、支付、发货、买家、卖家 6 个服务

根据可靠性拆分

将系统中的 可靠性要求高的核心服务可靠性要求低的非核心服务 拆分开来,然后重点保证核心服务的高可用,其优点如下:

  • 避免非核心服务故障影响核心服务,例如,日志上报是非核心服务,某一段时间内上报量可能会非常大,如果没有拆分出来,那么就可能严重影响核心服务
  • 核心服务高可用方案更简单,核心服务单独拆分出来后,涉及的数据、组件等都会更少,对其做高可用方案就简单很多,需要考虑的点较少
  • 降低高可用成本,拆分后,核心服务占用的机器、带宽等资源比不拆分要少很多

根据性能拆分

将对性能压力大的模块拆出来,避免影响其他服务,而且对其做性能提升、高可用等优化都更简单高效,例如电商的抢购,排队功能的性能压力很大,就可以将其独立为一个服务

根据事务拆分

通过分解事务上的服务进行拆分,按照 事务发起者,事务参与者,事务完成者 拆分成链式调用的服务,最后由 事务协调者服务 向所有参与方发出提交或回滚命令

完整微服务架构生态

我这里给出的解决方案是 React / Vue + Spring Cloud Alibaba + Apache Dubbo + Kubernetes + Istio 的方式实现我们的完整微服务架构生态,真正意义上满足三大指标(高可用、高性能、高并发),下一代 云架构时代,以后会尝试采用 区块链 的方式实现 Servless 函数即服务架构;下面我们看一下这几套解决方案在完整微服务架构生态中起到的主要作用

React / Vue

前后分离;将 视图层 解耦出来,使用 MVVM 模式实现双向数据绑定,利用其提供的 模块化虚拟 DOM 开发前端应用程序

Aapche Dubbo

高性能 Java RPC 通信框架;它在咱们微服务架构体系中仅充当 RPC 通信功能,我主要将它作用于 数据访问层,因为数据库不允许被直接访问,所以它在我们 三层架构 的最底层即可

Spring Cloud Alibaba

一站式微服务开发解决方案;我将它作用于 业务逻辑层,阿里巴巴提供的各种组件可以很好的为我们协调业务场景问题,比如 削峰填谷、熔断降级、流量控制

Kubernetes

容器编排管理系统;K8S 的重要性不言而喻,它是咱们实现云计算的重要工具,它有个缺点就是没有提供很好的 服务治理 能力

Istio

Service Mesh 服务网格,让你更好更轻松的解决服务治理问题;它补充了 K8S 缺失的服务治理能力,采用 Sidecar 模式为我们提供了一套 控制面包括 Pilot (规则配置)、Mixer (策略配置)、Citadel (证书生成与下发)、Kiali (规则验证)

Spring Cloud & Kubernetes

功能比较 Spring Cloud Alibaba Kubernetes
配置管理 Nacos ConfigMap
服务发现 Nacos Etcd
负载均衡 Ribbon Service
API 网关 借用 Spring Cloud Gateway Ingress
认证授权 借用 Spring Security oAuth2 Secrets
日志收集 ELK (LogStash) EFK (Fluentd)
指标收集 - Prometheus,Grafana
链路追踪 借用 Apache Skywalking ZipKin
熔断限流 Sentinel 支持
自动扩缩容 - 支持
打包部署 Spring Boot Docker
任务调度 Spring Batch Jobs
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342