微服务架构与领域驱动设计 - 王磊聚合根有唯⼀一的全局标识 业务流梳理理 寻找事件 寻找命令 寻找聚合 划分⼦子域&界限上下⽂文 统⼀一语⾔言 ① ② ③ ④ ⑤ ⑥ 划分⼦子域&限界上下⽂文 划分限界上下⽂文 • 合并业务意义结合紧密的聚合 • 合并业务不不确定性较⾼高的聚合 限界上下⽂文 ≈≈ 微服务 业务流梳理理 寻找事件 寻找命令 寻找聚合 划分⼦子域&界限上下⽂文 统⼀一语⾔言 ① ② ③ ④ ⑤ ⑥0 码力 | 28 页 | 1.84 MB | 1 年前3
Linux Con Workshop Quick Start Demo 殷湘 姜宁Human resource (服务治理) Project archive (请求缓存) 用户 Beekeeper (生物研究) 工业界用户有项目需要公司支持 1. 用户将项目请求发送给Manager 2. Manager从Bulletin board获取Doorman 联系方式 3. Manager将认证请求发送给Doorman 4. Doorman认证用户为合法企业用户则继续, Manager查询Project archive是否该内容 请求有处理记录 6. 如有处理记录,Manager将历史处理结果 直接返回给用户 7. 无处理记录,Manager从Bulletin board 获取有能力匹配人员的联系方式 8. Manager将请求发送给符合条件的 Worker/Beekeeper 9. Worker/Beekeeper处理请求并返回 处理结果给Manager 10. 以方便匹配能力的提供和消费 将最近常用的项目进行归档,如果有内容相同的请求到达, Manager可以就近获取结果,不必再购买Worker/Beekeeper提 供的计算服务,节省项目组开支 Human Resource从运维层面保证服务的可靠性,主要功能有 • 弹性伸缩:保证用户请求量超过Worker处理能力的某个阈值后,招聘更多Worker加入项目; 当请求量回落后,裁剪Worker以节省项目组开支 •0 码力 | 12 页 | 2.10 MB | 1 年前3
Service Mesh的思考及在华为云的实践• 一种基础设施层,服务间 通信通过Service mesh进 • 一种TCP/IP之上的网络模 型行 • 一个轻量的网络代理,与 业务部署在一起 • 可靠的传输复杂网络拓扑 中的服务请求,将服务变 为现代的云原生服务 Website: http://servicecomb.incubator.apache.org/ Gitter: https://gitter.im/ServiceCombUsers/Lobby Center Scheduler Governance API server Prometheus Zipkin 功能与实现原理 多协议支持 • 任意协议请求都被抽象为Invocation模型进行处理,最终再转换 为协议请求转发 6/30/2018 Http Request Grpc Request Transfer Invocation Http Server Grpc Server Instance Cache Management Service center 基于微服务元数据的路由管理 • 匹配请求者header • 匹配请求者元数据信息 • 按权重引流 • Router使用统一配置模型,支持插件对接不 同生态 6/30/2018 Request 请求特征: • Service Name • Headers • Consumer metadata Resolve0 码力 | 29 页 | 1.55 MB | 1 年前3
Service Mesh在华为公
有云的实践⽣生态与扩展 • Service Mesh在华为内部的技术演进 我们在构建微服务,⽽而构建微服务是困难 的 微服务架构模式引⼊入的问题 路由规则 • 引流 • ⽀支持权重 • 根据消费者信息或请求特征进⾏行引流 Consumer 0.2 Provider 1.2 Provider 1.3 80% 20% Consumer 0.1 Provider 1.2 Provider 1.3 即Mesher组件本⾝身,对所有请求进⾏行处 理 • 注册发现服务 • 执⾏行路由策略 • 负载均衡 • 透明TLS传输 • ⽣生成监控数据 Mesher ServiceC Mesher ServiceD Mesher ServiceA Mesher ServiceB Control Plane 可⼈人⼯工介⼊入,为所有运⾏行的Mesher 提供配置下发,不会碰服务请求 • 注册中⼼心 提供者都与Mesher部署 • 消费者为Java或者Go语⾔言微服务框架开发 • 消费者不使⽤用框架 ServiceA Mesher ServiceB SDK ServiceC 接受本地请求 Archiaus-go Registry Log Metric Collector SockShop Web http://order/list Config center Service0 码力 | 52 页 | 4.37 MB | 1 年前3
ServiceComb在Service Mesh的
探索与思考2017年由William Morgan提出 - 一种基础设施层,服务间通信通过Service Mesh进行 - 一种TCP/IP之上的网络模型 - 轻量网络代理,与业务部署在一起 - 可靠传输复杂拓扑网络中的请求 - 将应用变为现代的云原生应用 4 Application Service Mesh Transport Network Physical Application Transport Management Service center Huawei Confidential 9 基于微服务元数据的路由管理 • 匹配请求者header • 匹配请求者元数据信息 • 按权重引流 • Router使用统一配置模型,支持插件对接不同生态 请求特征: • Service Name • Headers • Consumer metadata Resolve 决定要访问的服务名后即可开 0,最近新上线了 1.1版本,你希望只让一部 分用户进行体验,那么你可 以定义Header带有device- os=android就将95%流量转 移版本为1.0的实例中,5% 转移到1.1版本 • 请求者的元数据中带有 env=production,那么要将 路由到元数据中带有 env=production的实例中 基于元数据的路由管理十分灵 活,可以满足用户大部分场景 Router Resolver0 码力 | 21 页 | 8.48 MB | 1 年前3
康彬-基于微服务的混合云和同城双活实践机器准备周期长,紧急 情况无法应对 大促后机器闲置率高,资 源浪费巨大 混合云需求分析 机器资源按需 申请 01 接入层按url调 度流量 02 服务层set化的 路由策略 03 数据层读请求 上云,写请求 回自建idc 04 流量大户上云,顶住流量洪峰 机器器资源按需分配 接入层URL粒度流量调度 LB DNS app/browser Nginx-Proxy Nginx-Proxy 桔子理财业务服务 桔子理财业务数据 代理 应用 registry(鼎盛) 鼎盛业务服务 鼎盛业务数据 代理 应用 缺乏全链路的系统诊断能力 业务系统 (业务错误码) 服务框架 (请求数、成功率等) 基础组件 (mq、fastdfs、redis、mysql) 操作系统 (CPU、内存、磁盘容量、系统负载) 出师不利后的复盘反思 相对更独立、历史包袱更轻业务板块试点 补齐短板、夯实基础 中间件 数据层 4 Mysql、Redis mysql、redis组件采集请求中包含的traceid 3 RocketMq mq通过消息属性字段透传traceid 2 LSF框架 微服务框架通过RPC调用上下文透传traceid 1 Api-gateway、CGI、Job调度 在源头为每次请求生产唯一标识traceid 混合云&同城双活 Nginx-Proxy 机房10 码力 | 47 页 | 6.09 MB | 1 年前3
ServiceComb设计揭秘:标准与开发华为CloudBU PaaS微服务引擎开发团队 代码阅读 • 一、系统架构解读 • 二、系统模块解读 • 三、框架的启劢不停止 • 四、框架运行时请求发送不处理过程 ServiceComb 开发框架 通信模型 (restful、 highway) 编程模型 (jaxrs、pojo、 springmvc) 不service id的关系为n:1,即Service ID可以拥有多个微服务实例; 系 统 模 块 图 框架的启劢不停止 框架运行时请求发送不处理过程 业务调用 构造请求元数据 消费端handlers 编码传输 请求解码 生产端handlers 业务代码映射 业务代码处理 服务消费端 服务提供端 如何参不到ServiceComb社区 • 线上:0 码力 | 9 页 | 831.77 KB | 1 年前3
ServiceComb java SDK详解beforeSendResponse Future complete Edge Service • 作为整个微服务系统对外的接口,向最终用户提供服务,接入RESTful请求,转发给内 部微服务 • 基于ServiceComb标准consumer流程转发请求到内部微服务,所有consumer治理能力, 不必独立开发,直接重用 ELB Edge Service Backend ...... Edge Service URL规划为:/{pefix}/{microserviceName}/{v1/v2/......}/path • 第一个segment为固定前缀,表示这是一个微服务调用,可用于让前置LB识别这是一个需要转发到edge的请求 这里假设前缀为rest • 第二个segment为微服务名 • 第三个segment表示兼容规则,v1表示调用1.0.0-2.0.0的微服务,v2表示2.0.0-3.0.0的微服务 如果内部微服务URL规则为: 通过getOrder声明相对其他dispatcher的执行顺序 • 自己能处理的url,拦截处理 – 根据自定义规则获取目标微服务名、版本规则、新url等等参数 – 通过EdgeInvocation转发请求 • 自己不能处理的url,放通给其他dispatcher处理 Metrics-架构 • 基于netflix spectator • Foundation-metrics通过SPI机制加载所有0 码力 | 21 页 | 1.15 MB | 1 年前3
使用微服务架构快速开发万级TPS高可用电商系统update-where 2. 库存缓存 AP Codis 3. 收藏数据 AP Codis 用户发请 求查库存 里列表 读缓存的 库存的列 表返回 用户对有库存 的房子发起下 单请求 再次查 询缓存 列表 锁定 资格 下单 (减库 存) 减 资 格 有库存 无库存 有资格 无 有库存 无 Codis MySQL-MGR 微服务层的优化 1. S https://github.com/apache?q=servicecomb 其他优化… 步骤3 其他优化: 1. 可以使用JMeter集群进行压测,不断调优,每台最高约1250 线程, 同时发请求。JMeter 需要调高 Xmx / Xms。 2. 需要迅速伸缩,用了docker-compose。 注意NAT的性能问题。 启发:不一定要K8s,Istio, 一定是需求驱动。 3. 设置一定的冗余,防止性能波动。 https://github.com/apache?q=servicecomb 其他优化… 步骤3 其他优化: 1. 可以使用JMeter集群进行压测,不断调优,每台最高约1250 线程, 同时发请求。JMeter 需要调高 Xmx / Xms。 2. 需要迅速伸缩,用了docker-compose。 注意NAT的性能问题。 启发:不一定要K8s,Istio, 一定是需求驱动。 3. 设置一定的冗余,防止性能波动。0 码力 | 15 页 | 1.46 MB | 1 年前3
Java Chassis通信处理详解 - 通信优化实践Executor 线程 …… 线程 队列 Executor 线程 …… 线程 队列 …… Consumer 消费端,主要需要处理的问题是如何更 高效地将请求推送到对端去,然后拿到 应答信息。 透明RPC Consumer业务线程 Consumer Eventloop 连接 业务线程 hello.sayHello() write(composite buffer) 业务线程 业务线程 Socket.write(composite buffer) Producer 丌同于消费者,生产者主要的工作就是等待消费者 的请求,在处理之后,返回应答 在这一端我们更加关注:“如何高效地接收和处理 数据”这件事情 同步模式下,业务逻辑不IO逻辑分离,且根据 “隔离仓”原则,为了保证整个系统更加稳定和高0 码力 | 17 页 | 2.22 MB | 1 年前3
共 19 条
- 1
- 2













