扫码阅读
手机扫码阅读
架构案例 | 如何设计服务边界?
242 2024-08-27
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
查看原文:架构案例 | 如何设计服务边界?
文章来源:
TechLead 少个分号
扫码关注公众号
摘要
01 问题背景
在公众号DDD和微服务上,作者付施威提出了一个关于订单服务接口设计的问题。问题中涉及到两种设计:传递用户ID或传递用户基本信息至订单服务。
02 两种方案的不足
方案1强调易用性,但可能导致需要频繁的级联修改。若用户服务的模型更改,所有依赖服务,包括订单服务,都需调整。
方案2强调服务的独立性,避免了方案1的耦合问题,但可能将业务逻辑转移到编排服务,导致订单服务退化为单表服务,形成一个分布式单体系统。
03 认知负载问题
团队规模和服务数量影响了服务拆分的决策。在多团队协作环境中,无论选择哪个方案,用户模型都是团队共同的认知负担,影响开发效率。
04 解决思路
限界上下文强调在特定上下文中保持概念一致性,而非全局一致性。在订单服务的上下文中,应关注买家和卖家的概念,而非用户。
05 解决方案: 角色扮演
角色扮演概念将用户区分为买家和卖家,从而避免单一服务对用户模型的直接依赖。这使得服务变更时,只需在编排服务中适配买家和卖家模型,减少了耦合和影响范围。
06 反思:微服务本质
微服务不仅是对数据的增删查改,而是围绕业务能力组织的服务。微服务应提供独立的业务能力,由独立团队开发和维护,支撑更大的业务需求。
想要了解更多内容?
查看原文:架构案例 | 如何设计服务边界?
文章来源:
TechLead 少个分号
扫码关注公众号
TechLead 少个分号的其他文章
书单 |《编码:隐匿在计算机软硬件背后的语言》(含购买广告)
书籍推荐:《编码:隐匿在计算机软硬件背后的语言》
信息检索指南
互联网和搜索引擎的出现,让现代人对信息的获取变得极其容易。但是,每个人的信息检索能力差异明显,甚至有人提出了 “搜商” 这个词来评价一个人搜索信息的能力。
建模和编程中的契约 —— Design By Contract
1. 业务是生意,不是功能也不是交互,人是生意的主体。\x0a2. 人是不可靠的,需要用契约来约束生活的方方面面。\x0a3. 把软件组装起来的连接点就是接口,接口也是契约。\x0a4. 开发软件是关于生意的生意,管理团队也需要契约。
系统设计 | 多币种设计
如果提前考虑到多币种的问题,在整套设计中会更加统一和简单,避免一些问题。
形势分析和运用
几乎每个人都有这种困惑,自己有一个完美的点子,想做一些自己以为有价值的事情,但是无论怎么样都无法推动,到头来都是自己一个人使劲儿。
加入社区微信群
与行业大咖零距离交流学习
软件研发质量管理体系建设
白皮书上线