微服务的设计原则与⽣态系统 - 王磊
CaaS/PaaS IaaS 微 服 务 开 发 框 架 ⼯工 程 实 践 与 规 范 持 续 交 付 流 ⽔水 线 端 到 端 的 ⼯工 具 链 注册发现 监控 调⽤用链 路路由 授权认证 ⽇日志聚合 容错 集中配置 基础设施 业务层 - 聚合服务 - 基础服务 接⼊入层 • 流量量限制 • 调⽤用统计 • 安全认证 • 提供统⼀一接⼝口,封装内部变化 • 协议转换 CaaS/PaaS IaaS 微 服 务 开 发 框 架 ⼯工 程 实 践 与 规 范 持 续 交 付 流 ⽔水 线 端 到 端 的 ⼯工 具 链 注册发现 监控 调⽤用链 路路由 授权认证 ⽇日志聚合 熔断 集中配置 基础设施 接⼊入层 业务层 - 聚合服务 - 基础服务 • ⾯面向对象设计(名词/动词) • 可重⽤用的逻辑 • 资源密集型部分 • 领域驱动设计 授权认证 ⽇日志聚合 容错 集中配置 基础设施 接⼊入层 业务层 - 聚合服务 - 基础服务 注册发现 为什什么要注册发现 • 服务重启/升级后的IP地址变化 • ⽔水平伸缩后服务的实例例数量量变化 • 同⼀一个结点运⾏行行多个服务(端⼝口不不同) 集中配置管理理 配置信息的管理理 50 • 与服务在同⼀一个包中 • 使⽤用隔离的配置⽂文件 • 使⽤用环境变量量管理理0 码力 | 62 页 | 6.65 MB | 1 年前3张波-虎牙直播在微服务改造中的实践
务弹性能力的要求较高,在业务高峰如果不能快速扩容,容易出现全网故障 传统配置下发方式 负载均衡配置固话在配置文件中, 节点操作需要人工上系统操作增减 节点 配置中心监听方式 客户端主动监听配置更新,配置秒 级生效,新扩容服务主动拉取全量 配置,流量接入时长缩短3分钟+ 配置名字服务 配置IP方式 服务端下发文件更新配置,更新配 置生效时间长,由于需要预先知道 负责均衡集群的机器信息,扩缩容 需要等元信息同步以后才能接入流 生效需要重新 reload配置,且节点新增或删除需人工上系统操作配置,配置生效对服务会有中断 配置IP方式 配置名字服务 客户端主动监听名字服务更新,节 点变更秒级生效 负载均衡配置固话在配置文件中, 节点操作需要人工上系统操作增减 节点 基于Nginx dyups模块的动态上下线 • 基于名字服务感知节点变化快速变更节点 • 基于nginx dyups模块实现节点变更秒级生效 微服务架构中基于DNS的服务注册与发现 接入TARS注册服务 • 对接K8S注册服务 • 解决多数据中心环形同步 DNS-F • DNS-F 增加对外部域名的预缓存支持; • Agent监控数据对接公司内部监控; • 日志输出对接公司内部日志服务; • 对接公司CMDB; • DNS-F Cluster; • DNS 忽略大小写 Nacos CMDB • 扩展对接虎牙CMDB • 对接内部负载均衡策略 虎牙直播与阿里共建Nacos生态0 码力 | 27 页 | 1.03 MB | 1 年前3Service Mesh的思考及在华为云的实践
Goal • 侵入式与非侵入式可结合使用 • 不绑定基础设施 • 服务可视化 • 高性能,轻量 • 尽最大可能插件化各功能模块 • 透明的产品体验:整合容器平台,微服务引擎,API 网关,指标监控,日志审计等云上服务,封装为微服 务平台,让用户感知不到背后的复杂 Website: http://servicecomb.incubator.apache.org/ Gitter: https://gitter 部署容器应用时只需勾选以启用Mesher 6/30/2018 背后发生了什么? • 为应用容器设置环境变量http_proxy • 为mesher设置CSE地址(注册中心, 配置中心) • 为mesher对接APM 日志收集 • 为mesher对接APM metrics收集 • 为mesher 对接APM 调用链追踪 • 告知mesher业务服务的版本以及监控 端口 性能损耗 使用前 使用后 TPS 26000 最佳实践 • 结合容器,容器网络,编排调度平台,监控平台使用 • 业务代码只需监听在127.0.0.1.使用mesher对外提供服务 • 使用SideCar部署模式 • 将服务提供者地址写在配置文件中,在本地里信息是http://x.x.x.x:port, 进行开发调试,上云后 需要与Mesher使用时,改为http://ServiceName • 服务调用层级不要超过3层 • 若调用层0 码力 | 29 页 | 1.55 MB | 1 年前3庖丁解牛:华为云微服务工具解放开发者
PaaS 业务创新 如AI 拆表 拆界面及业务逻辑 微服务化改造典型流程 挑战:强业务相关, 必须业务+微服务专 家介入,投入大、时 间长; 关键技术:应用微服 务化改造工具套件 根据sql、日志、代码实现微服务拆分,并修改相关代码。 Huawei Confidential 7 微服务拆分工具-表自动分库 SQL 语句 SQL 语句 SQL 语句 … 语法分析 语法分析 语法分析 algorithm (greedy/clustering/…) output 数据拆分 建议文件 解析代码,搜集sql语句 开发时预处理:通过 Antlr4工具生成java可识 别的解析规则的对象, 埋入源码 生成sql语句集(Mysql 或其他DB的方言) mysql/oracle 的规则文件 生成表关联关系list 计算权重,生成图 输出权重图, 选择、调用 指定算法 贪婪/谱聚类算法0 码力 | 14 页 | 1.54 MB | 1 年前3Metrics in ServiceComb Java Chassis 1.0.0-m1 让微服务运行状态清晰可见
Apache孵化器 • 进入ASF孵化的步骤 – 提起孵化提案 – 寻找Champion 和Mentor – 发起投票 – 投票通过在孵化器建立项目 – 签署SGA, CLA, iCLA文件 – 代码库迁移,建立邮件列表, wiki,JIRA – 商标检索转移工作 – 清理代码,修改包名 – 按照ASF的要求准备第一个release 13 github.com/apache Metrics 监控支持 异步编程模型支持 ZipkinV2版本支持 Service Center Java Chassis 1.0.0-m2 提升etcd弹性伸缩 边缘服务网关优化 支持文件流上传下载 用户自定义访问日志 Service Center Java Chassis 1.0.0 正式稳定版本发布 自动生成脚手架工程 支持Http2协议 自定义ping机制 Saga 0.1.0 分布式Pack原型0 码力 | 18 页 | 3.12 MB | 1 年前3Service Mesh在华为公 有云的实践
件,公司内部某电信业务 • 400多个微服务,800左右实例, 200多个数据中⼼心 Sidecar模式 • 基于容器的分布式系统设计模式 • 容器可以共享存储与⺴⽹网络的能⼒力 应⽤用程序容器 ⽇日志同步⼯工具容器 存储卷 Sidecar优势 • 以容器作为基础打包单元,可以分给不同的团队进⾏行开发测试 • 可重⽤用 • 以容器作为错误边界,使服务能够正确推出 • 独⽴立回滚与更新 使⽤用容器,容器⺴⽹网络与编排调度平台 • 业务代码监听在本地端⼝口,并且不要暴露业 务服务端⼝口。使⽤用Mesher端⼝口对外提供服务 • 使⽤用SideCar部署模式 • 将服务提供者地址写在配置⽂文件中,在本地 ⾥里信息是http://x.x.x.x:port,当需要与Mesher 使⽤用时,改为http://ServiceName Node Mesher 10.10.1.10:301010 码力 | 52 页 | 4.37 MB | 1 年前3康彬-基于微服务的混合云和同城双活实践
单集群 随着流量越来越大,集群规模 越来越大,怎么破? 单元化&多活的范围 boss 客服系统 销售系统 风控审核 催收系统 政策管理 prod devops 监控系统 调用链路 日志系统 …… oa 人事系统 智能推荐 大数据 AI/BI …… 交易平台 电商 现金 信用卡 会员 桔子理财 风控平台 用户增长 发布系统 故障时,只影响内 部办公相关的公司 DNS 内网 DNS 全链路系统诊断能力建设 Nginx job调度 Api-gateway CGI Application(LSF) Mysql Redis RocketMq 链路日志埋点 接入层 服务层 中间件 数据层 4 Mysql、Redis mysql、redis组件采集请求中包含的traceid 3 RocketMq mq通过消息属性字段透传traceid0 码力 | 47 页 | 6.09 MB | 1 年前3NTTDATA 汽车行业数字营销平台微服务化实践
协同平台 价值体系 流程体系 第三方渠道 展会 数字 展厅 PC门户 企业微信 官网 短信 小程序 公众号 标准体系 标签体系 数据 中台 …… 存储服务 安全服务 接口网关服务 日志服务 网络服务 …… 短信服务 技术 中台 ……. 消费者互动数据 消费者账号 消费者基础信息 消费者交易数据 消费者服务数据 ….. 人 人车关系数据 车况数据 车辆维修保养数 据 业务微服务化及分层设计 应用微服务引擎 第一层.CRM静态站点 第二层.CRM 业务网关 第三层.CRM 业务微服务 第四层.CRM 业务数据 服务中心 配置中心 治理中心 IT运维 日志可视化 (华为云) CDN/ WAF 资源监控预警 (华为云 AOM) 营销平台 接口服务 消息 REST NAT网关 NAT gateway 4核8G 按需扩容 4核8G 按需扩容0 码力 | 11 页 | 2.25 MB | 1 年前3ServiceComb java SDK详解
证比下面2类MetricsInitializer先执行 – Meters Initializer: 实现TPS、时延、线程 池、jvm资源等等数据的统计 – Publisher: 输出统计结果,内置了日志输出, 以及通过RESTful接口输出 • Metrics-prometheus提供与prometheus对接的能力 spectator spectator -reg- servo foundation-metrics ServiceComb Core spectator -ext-gc spectator -ext-jvm Metrics-log RESTful/prometheus输出内容为原始数据 日志输出内容是根据原始数据分析计算后的结果 • eventLoopContext-created 如果持续增加,说明有计划外的线程切换,需要定位 • threadPool 以线程池为单位进行统计,输出最小线程数、最大线程数、0 码力 | 21 页 | 1.15 MB | 1 年前3消费者云CSE微服务实践
有些业务场景对微服务调用安全要求较高,需要微服务框架支持 SSL传输、API鉴权和认证等 对于一些敏感信息,例如用户账号、金额等,在记录日志等落盘 和采集时需要做脱敏处理、资源占用要合理 敏感运维操作,需要记录安全日志,例如服务上线和下线、服务 的流控阈值修改等 微服务框架技术选型-服务治理能力 服务框架丌能只单单解决分布式RPC调用、服务注册&发现和路0 码力 | 22 页 | 1.39 MB | 1 年前3
共 20 条
- 1
- 2