微服务创新新品发布timeout=1s ServiceB.user.getUser.timeout=10s -在这样的数据格式设计下可生成多角度的配置视图,提升易用性,人类可读性 假如说我们要定义A到B以及到某个API的超时时间 -学习成本高,运维人员要学习这个只在团队内部生效的key规则 -所有的key集中在一种类型的视图中管理,管理成本高。 -不断增长的规则定义,越来越复杂,人类不可读。 -Key设计无法扩展变更,没法轻易变更数据结构 Spring cloud微服务 pack Mesher ServiceComb UX .Net 服务 PHP服务 NodeJS服务 其他语言编写 服务 Java 编写服务 ServiceComb全景图 9 github.com/apache?q=servicecomb servicecomb.apache.org ServiceMesh 服务通信规范 配置 流行微服务框架 可视化监控0 码力 | 12 页 | 2.96 MB | 1 年前3
 庖丁解牛:华为云微服务工具解放开发者表关联分析 图切割+启 发式规则 Step1:提取系统所有SQL Step2:逐条根据SQL创建语法树 Step3:在每棵语法树上分析表的关联关系并汇集 成表关联关系加权图 Step6:采用图切割算法并配合启发式规则将表分 割到不同库中 原则:低耦合,高内聚 耦合度:微服务划分后,微服务与微服务连接的边的权重之和 内聚度:微服务划分后,微服务内部表与表之间的边权重之和 采用图搜索算法 计算权重,生成图 输出权重图, 选择、调用 指定算法 贪婪/谱聚类算法 内容格式化 拿规则类解析sql语句 返回计算结果 1 2 3 4 5 6 7 8 9 sqlrule (mysql/oracle/…) 选择规则,透 传sql语句集 传入表关联关系list Huawei Confidential 10 案例1:存量系统1微服务拆分分析-图搜索拆分微服务 2 2 4 从左到右分别是拆分出来的商品库、模板库,最后一些离散表是系统为了关联外部系统而引入的表,独立成库 Huawei Confidential 11 案例2:存量系统2微服务拆分分析-图搜索拆分微服务 从左到右分别是拆分出扩展属性服务、模型/模型实例服务、目录服务以及离散表独立成的服务,其中离散表中标红部分概念上应该划分到模型/模型实例服 务中,但实际的sql,却并未体现其和模型/0 码力 | 14 页 | 1.54 MB | 1 年前3
 张波-虎牙直播在微服务改造中的实践Service Mesh Meetup #6 广州站 微服务改造事项 DNS-F在数据 库场景的落地 名字服务在负 载均衡场景的 落地 DNS-F在微服 务场景的落地 应用层探活 数据库故障 恢复时间长 服务故障牵 引慢,流量 接入生效时 间长 DNS生效慢 内部服务无 就近接入能 力 服务性能下 降流量不摘 除 实 例 切 换 能 力 秒 级 流 量 牵 引 能 力 D N S 华南IDC 华中IDC 华北IDC Nginx Nginx Nginx Web server 专线 背景 负载均衡变更需要更新配置发布后 才能生效,节点扩缩容,屏蔽操作 需要人工参与,流量接入接出时间 长 目标 流量接入接出时长低于30秒 负载均衡配置下发无状态改造 虎牙负载均衡部署的机器数百,配置下发的可靠性保障,一致性保障要求特别严格, 如果出现配置下发不及时,或下发配置失败,极大可能出现故障,同时负载均衡服 客户端主动监听配置更新,配置秒 级生效,新扩容服务主动拉取全量 配置,流量接入时长缩短3分钟+ 配置名字服务 配置IP方式 服务端下发文件更新配置,更新配 置生效时间长,由于需要预先知道 负责均衡集群的机器信息,扩缩容 需要等元信息同步以后才能接入流 量,扩容流量接入时间长 负载均衡节点对接名字服务 虎牙负载均衡部署的机器一台机器上可能存在数百的配置,每次节点生效需要重新 reload配置,且节点新增或删除需人0 码力 | 27 页 | 1.03 MB | 1 年前3
 ServiceComb设计揭秘:标准与开发微服务实例:一个独立的拥有自IP端口的微服务实例(通常为进程), 不service id的关系为n:1,即Service ID可以拥有多个微服务实例; 系 统 模 块 图 框架的启劢不停止 框架运行时请求发送不处理过程 业务调用 构造请求元数据 消费端handlers 编码传输 请求解码 生产端handlers 业务代码映射 业务代码处理0 码力 | 9 页 | 831.77 KB | 1 年前3
 ServiceComb在华为消费者云的亿级用户微服务实践ait),傻等期 间,无法处理其它业务消息。 2、纠结的超时时间:服务的超时时间配置是个比较纠结的事 情,如果超时时间配置过大,如果响应慢,会导致线程被长时 间挂住;如果配置过小,则会导致超时增多,成功率降低。 3、雪崩效应:假如超时时间配置较大(例如3S),服务端响 应的平均时延达到了超时时间阈值,会导致业务线程长时间处 于wait状态,工作效率降低,业务堆积,发生级联的雪崩效应。 和参数依赖,可以通过异步微服务调用并行执行 异步场景2:性能提升:使用更少的线程处理更多的消息,提升线程和I/O利用效率 异步场景3:业务超时较长:业务上对服务调用时延不敏感(例如1-3S),如果采用同步调用 + 大超时时间,在业务高峰期,如果 时延达到超时阈值,系统很容易被压挂 异步场景4:级联调用:需要级联调用多个微服务,希望提升可靠性,不会因为某个微服务处理慢而导致其它微服务调用被阻塞 传统I/O和业务线程分离技术:0 码力 | 15 页 | 1.15 MB | 1 年前3
 微服务场景下的数据一致性解决方案 - 殷湘yes/no yes/no yes/no Saga - 222 • 2种恢复策略 • 向前恢复 • 向后恢复 2 • 2个特点 • 和平 • 统一 2 • 2种运行模式 • 图遍历 • Akka Actor 2 恢复策略 - 向前恢复 • 重试N次直到成功或采取回退措施 (人工干预) B C A Saga transact transact transact0 码力 | 31 页 | 4.28 MB | 1 年前3
 微服务架构与领域驱动设计 - 王磊Tacking Complexity in the heart of software �9 微服务架构与领域驱动设计? �10 • 能有效⽀支撑演进式架构 微服务架构与领域驱动设计 �11 随着时间的推移,采⽤用领域驱动设计⽐比采⽤用 以数据中⼼心设计的软件复杂度要低得多。 《Pattern of EEA》 • 能有效降低复杂软件的维护成本 微服务架构与领域驱动设计 �12 微服务架构与领域驱动设计 • 业务流程中发⽣生的事件 • ⽤用“已发⽣生”时态描述 • 有时间顺序 业务流梳理理 寻找事件 寻找命令 寻找聚合 划分⼦子域&界限上下⽂文 统⼀一语⾔言 ① ② ③ ④ ⑤ ⑥ 参与过程: • 根据对业务的理理解,将领域事件写在橙⾊色贴上,每个即时贴代表⼀一个事件 • 事件按照从左到右按时间顺序排列列,不不同参与者的事件需保证相对顺序 • 事件采⽤用⽤用“xx已xx”的格式,如“订单已创建” 事件采⽤用⽤用“xx已xx”的格式,如“订单已创建” 什什么是(领域)事件? • 任何的业务都会以数据的形式留留下⾜足迹。我们对于数据的追溯可以通过对 事件的追溯来完成。当把这些事件按照时间顺序排列列起来,⼏几乎可以清晰 的推测出在过往的⼀一段时间内到底发⽣生了了深数据变化。 寻找命令 参与过程: • 将命令写在蓝⾊色即时贴上 • 将命令贴在所产⽣生的事件旁边 • 有的命令可能产⽣生多个事件 • 识别出触发命令的外部系统和⻆角⾊色0 码力 | 28 页 | 1.84 MB | 1 年前3
 ServiceComb java SDK详解根据传输通道分组 • 根据实际调用统计,隔离暂时不可用的调用目标 • 开发人员通过SPI扩展过滤功能 2.以过滤得到的Endpoint集合作为输入,根据配置的策 略进行LoadBalance: • 轮询、响应时间权重、随机 • 基于Netflix ribbon,开发人员可以根据需要自 定义IRule的实现 instances VersionRule 1.0.0-2.0.0 ...... Operation 单位输出tps、平均时延、最大时延 • producer 以transport、调用结果两个维度进行分组,以operation为 单位输出tps、平均时延、最大时延、平均排队时间、最大排队 时间、业务逻辑平均执行时间、最大执行时间 TODO: cpu/mem/gc...... 性能调优 • 网络相关配置参数 – 系统参数比较保守,需要根据实际情况设置合适的参数 • Producer线程池 网络带宽 关注是否已经占满带宽 • RSS 如果环境(硬件、os、驱动)支持RSS特性,确认队列数是否正确配置、中断是否均匀绑定了cpu、是否关闭了自动软中断负载均衡(不关闭会导致中断绑定, 在一段时间后失效) rest server verticle rest client verticle rest client max pool size highway server verticle0 码力 | 21 页 | 1.15 MB | 1 年前3
 反应式微服务框架ServiceComb设计思想&mdash黄金法则:不要阻塞Event Loop 什么才叫阻塞? n Thead.sleep() n 等待一个锁 n 等待一个互斥信号或监视器(例如同步的代码块) n 执行一个长时间数据库操作并等待其结果 n 执行一个复杂的计算,占用了可感知的时长 n 在循环语句中长时间逗留 10000TPS=0.1ms处理一个请求 如果利⽤多核? ServiceComb 采⽤Vert.x的背景 3 Vert.x vs webflux EdgeService 3 Callback hell 实践案例—华为消费者云 异步场景1:降低长流程/复杂业务流程时延 异步场景2:CPU资源使用率低、性能要求高 异步场景3:需要配置较长超时时间的接口 异步场景4:多个微服务级联调用 性能对比测试: 采用Reactive异步模式之后,TPS提升 43% 左右 时延降低 28% 左右,CPU占用降低 56% 左右 总结 n 根据业务场景选择,可同时使用;0 码力 | 33 页 | 5.68 MB | 1 年前3
 Metrics in ServiceComb 1.0.0-m1Heap使用数据等等,还有调用累加次数,当前队列长度等等。 • 2. 统计取值 • 经过一个特定的时间周期才能够统计出值,这个时间间隔我们可以称为窗口周期 (Window Time)或统计周期,例如: • a) 多值取其一的,比如Max、Min、Median(中位值); • b) 与时间相关的,比如TPS(transaction per second); • c) 与个数相关的,比如累加平均值、方差等等;0 码力 | 18 页 | 938.89 KB | 1 年前3
共 24 条
- 1
 - 2
 - 3
 













