使用微服务架构快速开发万级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 更适合小团队(个人)开发管理 • 更容易实验和采纳新的技术。 强大: • 使大型的复杂应用程序可以持续的交付和持续的部署。 • 更容易测试 • 更容易对已有大型系统进行修改和扩展 • 容易进行的性能优化 • 更高的可用性 • 更容易的进行性能伸缩性 适合同学们学习 Demo也可以作为生产系统的一部分 [社区网站] http://servicecomb.apache.org [Github ] https://github https://github.com/apache?q=servicecomb 服务间的通信 背景:为什么服务间通信重要? • 每个微服务有自己的数据库(层) • 服务架构应用的质量很大程度取决于服务的拆分的高内聚,低耦合,不了解服务间通信,无法做出高质量的拆分。 不同的业务,涉及的不同的服务间通信有不同的要求 1. 关注事务性要求(ACID) 2. 关注对性能的要求 举例:客户维护和订单是2个微服务0 码力 | 15 页 | 1.46 MB | 1 年前3
支持10万TPS的高性能服务间通信解读0 码力 | 7 页 | 1.58 MB | 1 年前3
微服务架构及ServiceComb实践更适合小团队(个人)开发管理 • 更容易实验和采纳新的技术。 强大: • 使大型的复杂应用程序可以持续的交付和持续的部署。 • 更容易测试 • 更容易对已有大型系统进行修改和扩展 • 容易进行的性能优化 • 更高的可用性 • 更容易的进行性能伸缩性 适合同学们学习 Demo也可以作为生产系统的一部分 [社区网站] http://servicecomb.apache.org [Github ] https://github https://github.com/apache?q=servicecomb 服务间的通信 背景:为什么服务间通信重要? • 每个微服务有自己的数据库(层) • 服务架构应用的质量很大程度取决于服务的拆分的高内聚,低耦合,不了解服务间通信,无法做出高质量的拆分。 不同的业务,涉及的不同的服务间通信有不同的要求 1. 关注事务性要求(ACID) 2. 关注对性能的要求 举例:商品维护和下订单是2个微服 是事实标准。 12306网站 15年 峰值 1032 单/s 11.7w PV 电商“抢购”“场景中企业中遇到的困难 1. 性能要求不断优化,和不能引入Bug之间的矛盾。 2. “变态”级别的高可用性要求。 3. 声誉和法律风险。 4. 抢购体验 商家的技术能力 产品质量。 [社区网站] http://servicecomb.apache.org [Github ] https://github0 码力 | 14 页 | 2.04 MB | 1 年前3
ServiceCenter - 服务注册中心3. 运行时依赖(Go) 4. 可靠性(BASE,最终一致性) 从服务注册中心到服务管理中心 1. 元数据 2. 依赖关系 3. 实例变化推送 4. 多租隔离 5. 高可用性保障 从服务注册中心到服务管理中心 元数据 1. 应用App,便于微服务可在多个应用间重用 2. 微服务名称,App内唯一 3. 微服务描述信息,让使用者可以快速了解到业务范畴等 微服务标签,支持按标签检索 高可用性保障 互联网分布式系统设计的准则:BASE 1. Basically Available(基本可用) 2. Soft state(软状态) 3. Eventually consistent(最终一致性) CAP理论:Consistency(一致性), 在分布式系统的各点同时保持数据的一致。 Availability(可用性), 每个请求都能接受到一个响应,无论响应成功戒失败。 了Provider端与ServiceCenter在出现网络分区故障时依然保持业务可用。 ServiceCenter在一个时间窗内监听到etcd有80%的实例下线事件,会立即 启劢自我保护机制。即使etcd存储的数据全部丢失,这种极端场景下, SDK与ServiceCenter之间可在不影响业务的前提下,做到数据自劢恢复。 虽然这个恢复是有损的,但在这种灾难场景下还能保持业务基本可用。 怎么实现的? 可视化 可监控0 码力 | 18 页 | 856.27 KB | 1 年前3
开源开发者的一天 - Apache ServiceComborg [Github ] https://github.com/apache?q=servicecomb 自由软件和商业软件 之间的折中 遵循版权前提下,可以自由访问、使 用、改变和共享,也可用做商用目的 开源发展第二阶段 [社区网站] http://servicecomb.apache.org [Github ] https://github.com/apache?q=servicecomb https://github.com/apache?q=servicecomb • 源代码开放,可自由访问、使用、修改和共享 • 开源许可协议的选择 • 开放式合作 • 无厂商绑定 • 没有歧视 • 可用做商用目的 开源的定义 [社区网站] http://servicecomb.apache.org [Github ] https://github.com/apache?q=servicecomb servicecomb-java-chassis 开箱即用、高性能、融合流行生态的Java微服务开发套件,用户开发微服务的基础组件 Java servicecomb-service-center 高性能、高可用、无状态的分布式服务注册与发现中心,帮助用户管理微服务 Golang servicecomb-pack 分布式事务解决方案,为用户提供Saga和TCC分布式事务协调机制,保证事务最终一致性 Java0 码力 | 31 页 | 2.02 MB | 1 年前3
张波-虎牙直播在微服务改造中的实践公司内部注册中心比较多,常见的有zookeeper、 ectd、consul、eureka等。服务注册通常有三种: 自注册、第三方注册、注册中心主动同步,异构微 服务相互调用困难;公共DNS不稳定,解析结果生 效慢,解析失败率高;DNS无法提供内网环境的就 近接入能力,内部服务调用无法实现就近访问。 目标 DNS解析成功率 100% 公共DNS分钟级生效 内部DNS秒级生效 基于IP+CMDB实现就近访问能力 11 dns当前现状 使用注册+DNS-f+健康检查模式。 DNS-F客户 端使用监听模式push/pull拉取更新信息 客户端定时轮询服务端获取其他服务ip信息并对 比,相比之下服务端压力较大、延迟较大 伸缩性 使用Raft选举算法性能、可用性、容错性均比较 好,新加入节点无需与所有节点互相广播同步信 息 由于使用广播同步信息,集群超过1000台机器 后对eureka集群压力很大 健康检查模式/方式 支持服务端/客户端/关闭检查模式,检查方式有 查器 客户端向服务端发送http心跳 负载均衡 支持 支持 手动上下线服务方式 通过控制台页面和API 通过调用API 跨中心同步 支持 不支持 k8s集成 支持 不支持 分组 Nacos可用根据业务和环境进行分组管理 不支持 权重 Nacos默认提供权重设置功能,调整承载流量压 力 不支持 厂商 阿里巴巴 Netflix 服务注册发现对比 配置中心对比 对比项目/配置中心 apollo0 码力 | 27 页 | 1.03 MB | 1 年前3
微服务环境下的系统治理与容错《架构修炼之道》作者,《决战618:探秘京东技术取胜之道》联合作者; • 对分布式、微服务系统有多年实战经验,所设计和研发的系统经历了多次百亿流量的验证; • 热爱分享,维护技术公众号 [程序架道],对高并发、高可用系统有持续不懈的追求; 个人微信号 技术公众号 • 微服务架构 • 容错 • 总结 • 治理 微服务架构 架构 架构 架构是为应用程序服务的 软件系统应用程序的需求 软件系统的价值维度 解耦合 独立开发部署 架构、组织、流程 微服务架构定义“三步法” 微服务拆分方法 微服务拆分-指导原则 拆服务-单体重构的节奏 服务分解的四大障碍 1、网络延迟 2、同步通信降低了可用性 3、跨服务的数据一致性 4、上帝类 微服务的忠告 n 第一,要记住微服务不是解决所有问题的万能 “银弹”。 n 第二,编写整洁的代码和使用自动化测试至关重要,因为这是现代软件开发的基础。0 码力 | 45 页 | 16.09 MB | 1 年前3
ServiceComb雄关漫道ServiceComb项目介绍 • Java Chassis • 高性能的微服务框架,提供服务注册发现以及动态配置管理,以及限流降级,容错熔 断等服务治理功能 • Service Center • 基于Etcd高性能,高可用服务注册中心 • Saga • 微服务事务最终一致性问题解决方案 • 提供一个集中式的事务协调器,协调微服务之间的事务调用,保证事务最终一致性 https://github.com/apache 脚手架应用示例 服务中心 多数据中心支持 契约测试 微服务管理控制 开源配置中心 对接多监控系统 Service Mesh 多语言微服务支持 监控管理对接 微服务事务协调器 服务端高可用 管理控制台 同步异步事件支持 如何加入到ServiceComb社区 • 线上 • 关注ServiceComb微信小助手, 加入微信群与大家进行交流 • 官网 http://servicecomb0 码力 | 20 页 | 4.00 MB | 1 年前3
庖丁解牛:华为云微服务工具解放开发者进程级 整体可用性 较低 更高 架构持续演进 困难 简单 沟通效率 低 高 技术栈选择 受限 灵活 可扩展性 受限 灵活 可重用性 低 高 实现业务复杂性分解难度 困难 容易 产品创新复杂度 困难 容易 一致性实现成本 低 高 时延 低 高 资源成本 低 高 关联查询复杂度 简单 复杂 远程调用 不涉及 涉及 服务治理 不涉及 涉及 对开发人员的要求 低 高 对工具的依赖 对工具的依赖 较低 较高 运维复杂度 低 高 Huawei Confidential 4 微服务架构的第一大问题——如何拆分微服务? •影响因素 >团队大小 >交付周期 >业务方向 >故障范围 >现有数据规模 >吞吐量 >一致性 >…… Huawei Confidential 5 拆分不好,可能带来的问题 •拆分不好,可能带来的问题 >服务数量爆炸,运维复杂 >服务数量太少,不够灵活 >一个user Step2:逐条根据SQL创建语法树 Step3:在每棵语法树上分析表的关联关系并汇集 成表关联关系加权图 Step6:采用图切割算法并配合启发式规则将表分 割到不同库中 原则:低耦合,高内聚 耦合度:微服务划分后,微服务与微服务连接的边的权重之和 内聚度:微服务划分后,微服务内部表与表之间的边权重之和 采用图搜索算法划分微服务的启发式规则(规则可自定义): 规则1:贪婪原则0 码力 | 14 页 | 1.54 MB | 1 年前3
ServiceComb 微服务框架Saga 分布式事务解决方案 服务中心 Java微服务SDK Go微服务SDK ServiceMesh ServiceCenter 是一个使用Go构造的、建立在etcd存储上的高性能、高 可用服务中心。 Java Chassis是一个由编程模型、运行模型、通信模型和服务契约四个 部分组成的微服务框架。 Saga 是一个微服务数据一致性解决方案。 ServiceComb的开放性设计 • 服务注册/服务发现 • 微服务元数据与依赖管理 • 支持监听服务实例状态变更 • 服务实例管理 • 高性能、高可靠 • 性能监控与调用追踪 特性介绍: Java-Chassis 分布式追踪 • 支持标准的分布式调用追踪Zipkin • 支持通过@span扩展自定义追踪 • 通过调用链支持自定义追踪扩展0 码力 | 11 页 | 668.81 KB | 1 年前3
共 34 条
- 1
- 2
- 3
- 4













