微服务设计 (4-集成)

in 分布式  |  update on
集成理想集成技术的条件 避免破坏性修改 有时候,对某个服务做的一些修改会导致该服务的消费方也随之发生改变。但是我们希望选用的技术可以尽量避免这种情况的发生。比如,如果一个微服务在一个响应中添加了一个字段,那么已有的消费方不应该受到影响。 保证 A P I 的技术无关性 保证微服务之间通信方式的技术无关性是非常重要的。这就意味着,不应该选择那种对微服务的具体实现技术有限制的集成方式。 使你的...
Continue reading

微服务设计 (5-分解单块系统)

in 分布式  |  update on
分解单块系统关键是接缝接缝 -> 限界上下文 分解单块系统的原因 改变的速度 团队结构 安全 技术 杂乱的依赖数据库 打破外键关系 共享静态数据 共享数据 共享表 事务边界 再试一次 终止整个操作 分布式事务 分布式事务很容易出错,而且不利于扩展。这种通过重试和补偿达成最终一致性的方式,会使得定位问题更加困难,而且有可能需要其他的补偿措施来修复潜在数据的不一致。...
Continue reading

微服务设计 (3-如何建模服务)

in 分布式  |  update on
如何建模服务什么样的服务是好服务松耦合 和 高内聚 限界上下文限界上下文 一个由显式边界限定的特定职责 共享的隐藏模型对 于 MusicCorp 来说,财务部门和仓库就可以是两个独立的限界上下文。 有时候,同一个名字在不同的上下文中有着完全不同的含义。比如,退货表示的是客户退回的一些东西。在客户的上下文中,退货意味着打印运送标签、寄送包裹,然后等待退款。在仓库的上下文中,退货表示的是一个即将到来的...
Continue reading

微服务设计 (7-测试)

in 分布式  |  update on
测试测试类型 测试范围 对于用户界面测试,接下来我们改称它为端到端测试。 单元测试 TDD (Test-Driven Design ,测试驱动开发) 单元测试是帮助我们开发人员的,是面向技术而非面向业务的。 服务测试 服务测试是绕开用户界面、直接针对服务的测试。在独立应用程序中,服务测试可能只测试为用户界面提供服务的一些类。对于包含多个服务的系统,一个服务测试只测试其中一个单独服务的功能。...
Continue reading

微服务设计 (6-部署)

in 分布式  |  update on
部署CI - Continuous Integration , 持续集成 你是否每天签入代码到主线? 你是否有一组测试来验证修改? 当构建失败后,团队是否把修复CI当作第一优先级的事情来做? ## 构建流水线和持续交付 CD - Continuous Delivery ,持续交付 构建流水线可以很好地跟踪软件构建进度:每完成一个阶段,就离终点更近一步。流水线也能够可视化本次构建物的软件质...
Continue reading

微服务设计 (8-监控)

in 分布式  |  update on
监控多个服务的指标跟踪Graphite之类的指标跟踪工具 服务指标暴露一切数据,然后依靠指标系统对它们进行处理。 综合监控Nagios监控告警 使用 合成事务 来确保系统行为在语义上的正确性,这也是这种技术通常被称为 语义监控 的原因。 在运行的系统上运行这些测试的子集,作为系统语义监控的一种方式。我们可以在生产环境上设置一组假用户和一些已知的数据集,不过必须确保不会触发意料之外的副作用。 使用关...
Continue reading

微服务设计 (9-安全)

in 分布式  |  update on
安全身份验证和授权当我们抽象地讨论进行身份验证的人或事时,我们称之为主体(principal) SSO (Single Sign-On,单点登录) 服务间的身份验证和授权在边界内允许一切。 HTTP(S)基本身份验证用户名和密码泄露 HTTP之上的HMACOAuth规范的一部分,并被广泛应用于亚马逊AWS的S3API。 使用HMAC,请求主体和私有密钥一起被哈希处理,生成的哈希值随请求一起发送。然...
Continue reading

srzyhead

Progress is the activity of today and the assurance of tomorrow.


Web Developer


Tianjin,China