首页 > 代码库 > 微服务设计--(1)

微服务设计--(1)

  微服务是一宗分布式系统解决方案,推动细粒度服务的试用,这些服务协同工作,且每个服务都有自己的生命周期。因为微服务主要围绕业务领域建模,所以避免了有传统的分层架构引发的很多问题。


1、微服务

背景

  随着领域驱动设计,持续交付,按需虚拟化,基础设施自动化,小型自制团队,大型集群系统这些实践的流行,微服务孕育而生

定义

  微服务就是一些协同工作的小而自制的服务

特点

很小,专注做一件事情

    • 内聚性:把因相同原因而变化的东西聚合在一起,把因不同原因而变化的东西分离出来
    • 边界划分原则:在一两个周内完全可以重写
    • 产生的问题:太小则独立性强,但管理大量的服务就越负责

  自治性

    • 尽量避免把多个服务部署到同一个服务器上
    • 服务之间通过网络调用进行通讯,从而避免了服务之间的耦合,加强了隔离性

优点

  技术异构性,弹性,扩展,简化部署,与组织结构相匹配,可组合性,对可替代性的优化

SOA

  定义:SOAService-Oriented Architecure,面向服务的架构)是一种设计方法,其中包含多个服务,而服务之间通过配合最终会提供一系列功能。

  与微服务的差别:一个服务通常以独立的形式存在于操作系统进程中。服务之间通过网络调用,而非采用进程内调用的方式进行。

  问题:通信协议(如SOAP)选择,第三方中间件选择,服务颗粒如何确定

  其他分解技术

    共享库,模块化

2、演化式架构

认识架构师

必须改变哪种从一开始就要设计出完美产品的想法,相反我们应该设计出一个合理的框架,在这个框架下可以慢慢演化出正确的系统,并且一旦我们学到了更多的知识,应该可以很容易地应用到系统中

架构师的责任

    • 愿景:确保在系统级有一个经过充分沟通的技术愿景,这个愿景应该可以帮助你满足客户和组织的需求
    • 合作:和尽量多的同时进行沟通,从而更好地对愿景进行定义,修订以及执行
    • 适应性:确保在你的客户和住址需要的时候能调整技术愿景
    • 自治性:在标准化和团队自治之间寻找一个正确的平衡
    • 治理:确保系统按照技术愿景和要求实现

微服务设计--(1)