 使用微服务架构快速开发万级TPS高可用电商系统[社区网站] http://servicecomb.apache.org [Github ] https://github.com/apache?q=servicecomb 使用微服务架构快速开发万级TPS高可用电商系统 git clone https://github.com/alec-z/servicecomb-samples cd servicecomb-samples/houserush/script/docker 其他优化: 1. 可以使用JMeter集群进行压测,不断调优,每台最高约1250 线程, 同时发请求。JMeter 需要调高 Xmx / Xms。 2. 需要迅速伸缩,用了docker-compose。 注意NAT的性能问题。 启发:不一定要K8s,Istio, 一定是需求驱动。 3. 设置一定的冗余,防止性能波动。 4. 配置重试,提高可用性。 5. 在压测状态,使用kill -9 模拟宕机,观察客户端异常情况。 其他优化: 1. 可以使用JMeter集群进行压测,不断调优,每台最高约1250 线程, 同时发请求。JMeter 需要调高 Xmx / Xms。 2. 需要迅速伸缩,用了docker-compose。 注意NAT的性能问题。 启发:不一定要K8s,Istio, 一定是需求驱动。 3. 设置一定的冗余,防止性能波动。 4. 配置重试,提高可用性。 5. 在压测状态,使用kill -9 模拟宕机,观察客户端异常情况。0 码力 | 15 页 | 1.46 MB | 1 年前3 使用微服务架构快速开发万级TPS高可用电商系统[社区网站] http://servicecomb.apache.org [Github ] https://github.com/apache?q=servicecomb 使用微服务架构快速开发万级TPS高可用电商系统 git clone https://github.com/alec-z/servicecomb-samples cd servicecomb-samples/houserush/script/docker 其他优化: 1. 可以使用JMeter集群进行压测,不断调优,每台最高约1250 线程, 同时发请求。JMeter 需要调高 Xmx / Xms。 2. 需要迅速伸缩,用了docker-compose。 注意NAT的性能问题。 启发:不一定要K8s,Istio, 一定是需求驱动。 3. 设置一定的冗余,防止性能波动。 4. 配置重试,提高可用性。 5. 在压测状态,使用kill -9 模拟宕机,观察客户端异常情况。 其他优化: 1. 可以使用JMeter集群进行压测,不断调优,每台最高约1250 线程, 同时发请求。JMeter 需要调高 Xmx / Xms。 2. 需要迅速伸缩,用了docker-compose。 注意NAT的性能问题。 启发:不一定要K8s,Istio, 一定是需求驱动。 3. 设置一定的冗余,防止性能波动。 4. 配置重试,提高可用性。 5. 在压测状态,使用kill -9 模拟宕机,观察客户端异常情况。0 码力 | 15 页 | 1.46 MB | 1 年前3
 Service Mesh的思考及在华为云的实践Application Service Mesh Transport Network Physical Application Transport Network Physical 为什么要使用 • 解放业务开发者 • 改造遗留老应用成为云原生应用 • 代码0侵入 • 学习曲线 Website: http://servicecomb.incubator.apache.org/ Gitter: incubator.apache.org/ Gitter: https://gitter.im/ServiceCombUsers/Lobby Mesher Design Goal • 侵入式与非侵入式可结合使用 • 不绑定基础设施 • 服务可视化 • 高性能,轻量 • 尽最大可能插件化各功能模块 • 透明的产品体验:整合容器平台,微服务引擎,API 网关,指标监控,日志审计等云上服务,封装为微服 务平台,让用户感知不到背后的复杂 Consumer service 注册发现 • 统一的缓存保存机制 • Registrator与ServiceDiscovery插件,对接多种不同的注册发现服务 • 解耦的注册器和服务发现模块,可灵活选择使用客户端发现还是服务端发现 6/30/2018 Registrator Service center Istio Kubern etes Consul Eureka Service Discovery0 码力 | 29 页 | 1.55 MB | 1 年前3 Service Mesh的思考及在华为云的实践Application Service Mesh Transport Network Physical Application Transport Network Physical 为什么要使用 • 解放业务开发者 • 改造遗留老应用成为云原生应用 • 代码0侵入 • 学习曲线 Website: http://servicecomb.incubator.apache.org/ Gitter: incubator.apache.org/ Gitter: https://gitter.im/ServiceCombUsers/Lobby Mesher Design Goal • 侵入式与非侵入式可结合使用 • 不绑定基础设施 • 服务可视化 • 高性能,轻量 • 尽最大可能插件化各功能模块 • 透明的产品体验:整合容器平台,微服务引擎,API 网关,指标监控,日志审计等云上服务,封装为微服 务平台,让用户感知不到背后的复杂 Consumer service 注册发现 • 统一的缓存保存机制 • Registrator与ServiceDiscovery插件,对接多种不同的注册发现服务 • 解耦的注册器和服务发现模块,可灵活选择使用客户端发现还是服务端发现 6/30/2018 Registrator Service center Istio Kubern etes Consul Eureka Service Discovery0 码力 | 29 页 | 1.55 MB | 1 年前3
 Metrics in ServiceComb 1.0.0-m1Metrics的分类 • Metrics有很多种分类方式,在技术实现上我们偏向以取值方式区 分为两种: • 1. 直接取值 • 任何时候都能够立刻获取到最新值,例如资源使用率,包括CPU使用率,线程数, Heap使用数据等等,还有调用累加次数,当前队列长度等等。 • 2. 统计取值 • 经过一个特定的时间周期才能够统计出值,这个时间间隔我们可以称为窗口周期 (Window Time)或统计周期,例如: Netflix Servo Dropwizard Metrics Spring Boot Actuator 计数器(Monitor)的实 现 性能相对高效 功能相对丰富 较弱,但是支持使用 Dropwizard Metrics集成实现 强化 数据发布 Push模式,自带三种 Observer Pull或Push,自带几种 Reporter Pull或Push,自带两种 Repository 配置以及管理功能的微服务框架,因此我们决定提供内置的更强 大的Metrics功能: • 开箱即用,不写一行代码输出关键Metrics,全面覆盖调用数、TPS、 Latency等; • 基于Netflix Servo,使用固定统计周期(稍后会详细介绍); • 多维度统计,帮助用户抽丝剥茧快速定位问题,支持的维度包括: • 微服务实例(Instance)级和操作(Operation)级; • 操作结果成功(S0 码力 | 18 页 | 938.89 KB | 1 年前3 Metrics in ServiceComb 1.0.0-m1Metrics的分类 • Metrics有很多种分类方式,在技术实现上我们偏向以取值方式区 分为两种: • 1. 直接取值 • 任何时候都能够立刻获取到最新值,例如资源使用率,包括CPU使用率,线程数, Heap使用数据等等,还有调用累加次数,当前队列长度等等。 • 2. 统计取值 • 经过一个特定的时间周期才能够统计出值,这个时间间隔我们可以称为窗口周期 (Window Time)或统计周期,例如: Netflix Servo Dropwizard Metrics Spring Boot Actuator 计数器(Monitor)的实 现 性能相对高效 功能相对丰富 较弱,但是支持使用 Dropwizard Metrics集成实现 强化 数据发布 Push模式,自带三种 Observer Pull或Push,自带几种 Reporter Pull或Push,自带两种 Repository 配置以及管理功能的微服务框架,因此我们决定提供内置的更强 大的Metrics功能: • 开箱即用,不写一行代码输出关键Metrics,全面覆盖调用数、TPS、 Latency等; • 基于Netflix Servo,使用固定统计周期(稍后会详细介绍); • 多维度统计,帮助用户抽丝剥茧快速定位问题,支持的维度包括: • 微服务实例(Instance)级和操作(Operation)级; • 操作结果成功(S0 码力 | 18 页 | 938.89 KB | 1 年前3
 走进开源 - Apache ServiceComb[社区网站] http://servicecomb.apache.org [Github ] https://github.com/apache?q=servicecomb • 源代码开放,可自由访问、使用、修改和共享 • 开源许可协议的选择 • 开放式合作 • 无厂商绑定 • 没有歧视 • 可用做商用目的 开源的定义 [社区网站] http://servicecomb.apache.org 多样化的社区,防止单一公司的控制,鼓励 协同开发 “community over code” 决策透明公开:讨论,决定和存档均基于 mailing list 商业友好的开源许可证, Apache项目使用 permissive license的Apache 2.0许可证 代码是社区合作开发的 投票机制管理社区 代表个人行为不代表企业利益 基于尊重、诚实、专注于技术的社区模 式交流 Apache http://servicecomb.apache.org [Github ] https://github.com/apache?q=servicecomb 怎样快速融入到开源社区中 • 培养自己的好奇心 • 使用好搜索引擎 • 围观问题修复学技术 • 在网上多“混混” 圈子 • 找个项目做贡献成为Committer [社区网站] http://servicecomb.apache.org [Github0 码力 | 28 页 | 1.92 MB | 1 年前3 走进开源 - Apache ServiceComb[社区网站] http://servicecomb.apache.org [Github ] https://github.com/apache?q=servicecomb • 源代码开放,可自由访问、使用、修改和共享 • 开源许可协议的选择 • 开放式合作 • 无厂商绑定 • 没有歧视 • 可用做商用目的 开源的定义 [社区网站] http://servicecomb.apache.org 多样化的社区,防止单一公司的控制,鼓励 协同开发 “community over code” 决策透明公开:讨论,决定和存档均基于 mailing list 商业友好的开源许可证, Apache项目使用 permissive license的Apache 2.0许可证 代码是社区合作开发的 投票机制管理社区 代表个人行为不代表企业利益 基于尊重、诚实、专注于技术的社区模 式交流 Apache http://servicecomb.apache.org [Github ] https://github.com/apache?q=servicecomb 怎样快速融入到开源社区中 • 培养自己的好奇心 • 使用好搜索引擎 • 围观问题修复学技术 • 在网上多“混混” 圈子 • 找个项目做贡献成为Committer [社区网站] http://servicecomb.apache.org [Github0 码力 | 28 页 | 1.92 MB | 1 年前3
 ServiceComb在华为消费者云的亿级用户微服务实践im/ServiceCombUsers/Lobby 遵循OpenAPI Specification,消费端、提供端只依赖API  API描述:无论Rest API,或者RPC Highway API,统一使用Swagger YAML定义API  微服务代码生成:服务端和客户端都基于API定义,通过 ServiceComb提供的工具生成不同语言的类库,客户端可以不导入服务 端的类库定义,双方互相解耦 https://gitter.im/ServiceCombUsers/Lobby 不同团队,经验和开发习惯都有差异,选择适合业务的开发模式 1、传统使用Spring MVC开发的团队,继续使用Spring MVC风格: 2、使用DSF等服务框架开发的,更熟悉透明RPC开发模式: 3、还可以使用JAX-RS模式开发微服务: 开发模式没有优劣之分,对于重构方式进行的微服务开发,选择 业务熟悉的模式,可以更好的重用已有代码和开发经验,提升重构 系,无论是同步服务调用还是异步服务调用,I/O通信都 可以采用异步非阻塞模式 同步服务调用的几个缺点: 1、业务线程利用率低:线程资源是系统中比较重要的资源, 在一个进程中线程总数是有限制的。提升线程的使用率,就能 够有效提升系统的吞吐量。在同步服务调用中,如果服务端没 有返回响应,客户端业务线程就会一直阻塞(wait),傻等期 间,无法处理其它业务消息。 2、纠结的超时时间:服务的超时时间配置是个比较纠结的事0 码力 | 15 页 | 1.15 MB | 1 年前3 ServiceComb在华为消费者云的亿级用户微服务实践im/ServiceCombUsers/Lobby 遵循OpenAPI Specification,消费端、提供端只依赖API  API描述:无论Rest API,或者RPC Highway API,统一使用Swagger YAML定义API  微服务代码生成:服务端和客户端都基于API定义,通过 ServiceComb提供的工具生成不同语言的类库,客户端可以不导入服务 端的类库定义,双方互相解耦 https://gitter.im/ServiceCombUsers/Lobby 不同团队,经验和开发习惯都有差异,选择适合业务的开发模式 1、传统使用Spring MVC开发的团队,继续使用Spring MVC风格: 2、使用DSF等服务框架开发的,更熟悉透明RPC开发模式: 3、还可以使用JAX-RS模式开发微服务: 开发模式没有优劣之分,对于重构方式进行的微服务开发,选择 业务熟悉的模式,可以更好的重用已有代码和开发经验,提升重构 系,无论是同步服务调用还是异步服务调用,I/O通信都 可以采用异步非阻塞模式 同步服务调用的几个缺点: 1、业务线程利用率低:线程资源是系统中比较重要的资源, 在一个进程中线程总数是有限制的。提升线程的使用率,就能 够有效提升系统的吞吐量。在同步服务调用中,如果服务端没 有返回响应,客户端业务线程就会一直阻塞(wait),傻等期 间,无法处理其它业务消息。 2、纠结的超时时间:服务的超时时间配置是个比较纠结的事0 码力 | 15 页 | 1.15 MB | 1 年前3
 开源开发者的一天 - Apache ServiceComb[社区网站] http://servicecomb.apache.org [Github ] https://github.com/apache?q=servicecomb • 源代码开放,可自由访问、使用、修改和共享 • 开源许可协议的选择 • 开放式合作 • 无厂商绑定 • 没有歧视 • 可用做商用目的 开源的定义 [社区网站] http://servicecomb.apache.org 多样化的社区,防止单一公司的控制,鼓励 协同开发 “community over code” 决策透明公开:讨论,决定和存档均基于 mailing list 商业友好的开源许可证, Apache项目使用 permissive license的Apache 2.0许可证 代码是社区合作开发的 投票机制管理社区 代表个人行为不代表企业利益 基于尊重、诚实、专注于技术的社区模 式交流 Apache 如何融入开源社区 • 培养自己的好奇心 • 使用好搜索引擎 • 围观问题修复学技术 • 在网上多混混圈子 • 找个项目做贡献成为Committer [社区网站] http://servicecomb.apache.org [Github ] https://github.com/apache?q=servicecomb 加入开源社区做贡献 • 使用开源社区软件 • 参与邮件列表讨论 •0 码力 | 31 页 | 2.02 MB | 1 年前3 开源开发者的一天 - Apache ServiceComb[社区网站] http://servicecomb.apache.org [Github ] https://github.com/apache?q=servicecomb • 源代码开放,可自由访问、使用、修改和共享 • 开源许可协议的选择 • 开放式合作 • 无厂商绑定 • 没有歧视 • 可用做商用目的 开源的定义 [社区网站] http://servicecomb.apache.org 多样化的社区,防止单一公司的控制,鼓励 协同开发 “community over code” 决策透明公开:讨论,决定和存档均基于 mailing list 商业友好的开源许可证, Apache项目使用 permissive license的Apache 2.0许可证 代码是社区合作开发的 投票机制管理社区 代表个人行为不代表企业利益 基于尊重、诚实、专注于技术的社区模 式交流 Apache 如何融入开源社区 • 培养自己的好奇心 • 使用好搜索引擎 • 围观问题修复学技术 • 在网上多混混圈子 • 找个项目做贡献成为Committer [社区网站] http://servicecomb.apache.org [Github ] https://github.com/apache?q=servicecomb 加入开源社区做贡献 • 使用开源社区软件 • 参与邮件列表讨论 •0 码力 | 31 页 | 2.02 MB | 1 年前3
 ServiceComb在Service Mesh的
探索与思考Service center Huawei Confidential 9 基于微服务元数据的路由管理 • 匹配请求者header • 匹配请求者元数据信息 • 按权重引流 • Router使用统一配置模型,支持插件对接不同生态 请求特征: • Service Name • Headers • Consumer metadata Resolve 决定要访问的服务名后即可开 始匹配路由规则,比如 Service Instances: 10.24.0.23:8080 10.24.0.24:8080 … Istio Apollo Huawei Confidential 10 多协议支持 - 使用Invocation抽象 - 协议可快速接入到mesher中,并享受同样的治理能力 Http Request Grpc Request Transfer Invocation Http Server Registry k8s k8s Service center Service center etcd Huawei Confidential 12 一站式解决方案:开发框架与Mesher混合使用 - 基于ServiceComb解决方案,Mesher,go chassis等组件,打造华为公有云微服务引擎 - 支持java,go语言编程框架和多语言接入 - 支持异构基础设施 - 对接多种监控系统0 码力 | 21 页 | 8.48 MB | 1 年前3 ServiceComb在Service Mesh的
探索与思考Service center Huawei Confidential 9 基于微服务元数据的路由管理 • 匹配请求者header • 匹配请求者元数据信息 • 按权重引流 • Router使用统一配置模型,支持插件对接不同生态 请求特征: • Service Name • Headers • Consumer metadata Resolve 决定要访问的服务名后即可开 始匹配路由规则,比如 Service Instances: 10.24.0.23:8080 10.24.0.24:8080 … Istio Apollo Huawei Confidential 10 多协议支持 - 使用Invocation抽象 - 协议可快速接入到mesher中,并享受同样的治理能力 Http Request Grpc Request Transfer Invocation Http Server Registry k8s k8s Service center Service center etcd Huawei Confidential 12 一站式解决方案:开发框架与Mesher混合使用 - 基于ServiceComb解决方案,Mesher,go chassis等组件,打造华为公有云微服务引擎 - 支持java,go语言编程框架和多语言接入 - 支持异构基础设施 - 对接多种监控系统0 码力 | 21 页 | 8.48 MB | 1 年前3
 Apache ServiceComb 开源微服务社区标准契约管理 复杂留给自己,极简留给用户 • 跨服务事务一致性 • 多语言,同时选型 • 灵活扩展、定制 • 减少基础设施运 维工作量 为解决微服务化痛点而生 在同一个业 务领域的微 服务中使用 了多种不同 语言进行开 发部署 使能多微服 务技术栈开 发的微服务 应用之间协 同工作和共 同治理 使能满足第三 方认证被广泛 采纳的趋势下 认证鉴权的性 能和安全的要 求 帮助企业用 • 架构不统一,有使用SpringCloud、传统RPC、 Servlet等各种架构,维护成本非常高 大系统小做,缩短上线周期 • 快速、小批量交付价值需求 • 上线周期: 月 -> 周/天 动态自治降运维成本 • 弹性伸缩、故障自动迁 移、降级熔断,提升复 杂分布式系统运维效率 系统性能大幅提升 • QPS提升2倍+ • 时延降低45% • CPU使用率下降56% 全自动化微服务流水线 18年参与LC3、HCC、Kubecon等业界大会,共举办meetup 20+场,用户现场workshop 40+场次 • 目前被各行业企业广泛使用,覆盖IOT、生物医药、金融保险、互联网、地产、教育、AI、高校 等 • 高校/教育机构合作课程开发,中国教育培训机构传智播客使用其作为微服务教程,软通动力、 中软国际等ISV作为微服务赋能教材,在深圳大学、南方科技大学、深职院等被作为赋能课程进 行微服务讲座0 码力 | 15 页 | 2.86 MB | 1 年前3 Apache ServiceComb 开源微服务社区标准契约管理 复杂留给自己,极简留给用户 • 跨服务事务一致性 • 多语言,同时选型 • 灵活扩展、定制 • 减少基础设施运 维工作量 为解决微服务化痛点而生 在同一个业 务领域的微 服务中使用 了多种不同 语言进行开 发部署 使能多微服 务技术栈开 发的微服务 应用之间协 同工作和共 同治理 使能满足第三 方认证被广泛 采纳的趋势下 认证鉴权的性 能和安全的要 求 帮助企业用 • 架构不统一,有使用SpringCloud、传统RPC、 Servlet等各种架构,维护成本非常高 大系统小做,缩短上线周期 • 快速、小批量交付价值需求 • 上线周期: 月 -> 周/天 动态自治降运维成本 • 弹性伸缩、故障自动迁 移、降级熔断,提升复 杂分布式系统运维效率 系统性能大幅提升 • QPS提升2倍+ • 时延降低45% • CPU使用率下降56% 全自动化微服务流水线 18年参与LC3、HCC、Kubecon等业界大会,共举办meetup 20+场,用户现场workshop 40+场次 • 目前被各行业企业广泛使用,覆盖IOT、生物医药、金融保险、互联网、地产、教育、AI、高校 等 • 高校/教育机构合作课程开发,中国教育培训机构传智播客使用其作为微服务教程,软通动力、 中软国际等ISV作为微服务赋能教材,在深圳大学、南方科技大学、深职院等被作为赋能课程进 行微服务讲座0 码力 | 15 页 | 2.86 MB | 1 年前3
 张波-虎牙直播在微服务改造中的实践支持AP和CP模型 AP模型 客户端更新服务信息 使用注册+DNS-f+健康检查模式。 DNS-F客户 端使用监听模式push/pull拉取更新信息 客户端定时轮询服务端获取其他服务ip信息并对 比,相比之下服务端压力较大、延迟较大 伸缩性 使用Raft选举算法性能、可用性、容错性均比较 好,新加入节点无需与所有节点互相广播同步信 息 由于使用广播同步信息,集群超过1000台机器 后对eureka集群压力很大0 码力 | 27 页 | 1.03 MB | 1 年前3 张波-虎牙直播在微服务改造中的实践支持AP和CP模型 AP模型 客户端更新服务信息 使用注册+DNS-f+健康检查模式。 DNS-F客户 端使用监听模式push/pull拉取更新信息 客户端定时轮询服务端获取其他服务ip信息并对 比,相比之下服务端压力较大、延迟较大 伸缩性 使用Raft选举算法性能、可用性、容错性均比较 好,新加入节点无需与所有节点互相广播同步信 息 由于使用广播同步信息,集群超过1000台机器 后对eureka集群压力很大0 码力 | 27 页 | 1.03 MB | 1 年前3
 消费者云CSE微服务实践微服务框架技术选型-支持多语言  尽管现在以Java和GO语言为主,但是从架构演进角度考虑,未来 会根据消费者业务自身的特点引入更适合的语言  服务框架丌要绑定具体的语言实现,例如内部通信协议使用某种 语言特定的序列化机制、发布泛型、抽象接口等 微服务框架技术选型-灵活和轻量级架构  当前业务服务端都是非Web应用,所以丌需要运行在Web容器中, 需要类似Main函数可以直接拉起来的Standalone模式 流量控制、幵发控制、超时控制、服务降级、服务熔断、路由权 重调整…  常用的服务治理能力要内置到服务框架中,业务领域强相关、非 通用能力可以通过扩展点实现 微服务框架技术选型-易集成  当前业务使用Spring MVC等传统的单体架构,希望可以较平滑、 低成本的迁移到微服务架构上:  从业务接受度上,希望丌要翻天覆地的改变业务开发习惯,最好能够兼容原Spring MVC开发模式 选型诉求,而CSE则能够很好的满足我们的需求  仔细阅读了CSE的主要模块代码,包括网络通信、线程调度模型等,代码质量非常高, 对细节的把握比较好  选型试用时,大家对CSE的接受度比较高,使用CSE改造已有的Spring MVC代码相对较 容易些  华为内部的平台,无论是新需求接纳,还是技术支撑,各方面保障都比较给力  天生支持Docker容器不华为公有云,降低业务云化成本0 码力 | 22 页 | 1.39 MB | 1 年前3 消费者云CSE微服务实践微服务框架技术选型-支持多语言  尽管现在以Java和GO语言为主,但是从架构演进角度考虑,未来 会根据消费者业务自身的特点引入更适合的语言  服务框架丌要绑定具体的语言实现,例如内部通信协议使用某种 语言特定的序列化机制、发布泛型、抽象接口等 微服务框架技术选型-灵活和轻量级架构  当前业务服务端都是非Web应用,所以丌需要运行在Web容器中, 需要类似Main函数可以直接拉起来的Standalone模式 流量控制、幵发控制、超时控制、服务降级、服务熔断、路由权 重调整…  常用的服务治理能力要内置到服务框架中,业务领域强相关、非 通用能力可以通过扩展点实现 微服务框架技术选型-易集成  当前业务使用Spring MVC等传统的单体架构,希望可以较平滑、 低成本的迁移到微服务架构上:  从业务接受度上,希望丌要翻天覆地的改变业务开发习惯,最好能够兼容原Spring MVC开发模式 选型诉求,而CSE则能够很好的满足我们的需求  仔细阅读了CSE的主要模块代码,包括网络通信、线程调度模型等,代码质量非常高, 对细节的把握比较好  选型试用时,大家对CSE的接受度比较高,使用CSE改造已有的Spring MVC代码相对较 容易些  华为内部的平台,无论是新需求接纳,还是技术支撑,各方面保障都比较给力  天生支持Docker容器不华为公有云,降低业务云化成本0 码力 | 22 页 | 1.39 MB | 1 年前3
共 23 条
- 1
- 2
- 3













