分享

架构思考之SOA服务化架构原则

 天下小粮仓 2018-05-12

随着技术的不断进步,我们的技术框架也需要不断与时俱进。近些年,SOA、微服务的思想很火,下面我们简单介绍下SOA和服务治理的一些原则,希望可以让大家得到思考。

一、面向服务设计的原则

  • 服务可复用:不管是否存在即时复用的机会,服务均被设计为支持潜在的可复用

  • 服务共享一个标准契约:为了与服务提供者交互,消费者需要导入服务提供者的服务契约,这个契约可以是一个IDL文件,Java接口定义,WSDL文件,甚至是接口说明文档

  • 服务是松耦合的:服务被设计为功能相对独立,尽量不依赖其他服务的独立功能提供者

  • 服务是底层逻辑的抽象:只有经服务契约所暴露的服务队外部世界可见,契约之外底层的实现逻辑是不可见的

  • 服务是可组合、可编排的:多个服务可能被编排组合成一个新的服务,这允许不同逻辑抽象的自由组合,促进服务的复用

  • 服务是自治的:逻辑由服务所控制,并位于一个清晰的边界内,服务已经在边界内被控制,不依赖其他服务

  • 服务是无状态的:服务应当不需要管理状态信息,因此能够维持送耦合性。服务应该被尽可能设计成无状态,即便意味着要将状态管理移至他处

  • 服务是可被自动发现的:服务发布上线后,允许被其他消费者自动发现;当服务提供者下线后,允许消费者接收服务下线通知。

二、服务治理

SOA服务化之后,应用服务化之后给系统运维带来很大挑战:

  • 分布式框架下的服务调用性能

  • 服务化架构如何支持线性扩展

  • 如何实现高效、实时的服务多维度监控

  • 大规模分布式环境下的故障快速定界和定位

  • 分布式环境下海量日志在线检索、模糊查询

  • 服务的流控、超时控制、服务升降级等管控手段

  • 服务的划分原则,如何实现最大程度复用

此时,SOA服务治理是关键。SOA服务治理主要包括如下几个方面:

1、服务定义

SOA治理最基础的方面就是监视服务的创建过程。必须对服务进行标识,描述其功能,确定其行为范围并设计其接口。创建服务时需要与使用这些服务的团队进行协调,以确保服务能够满足消费者需求,避免重复工作。

2、服务生命周期管理

服务的生命周期通常有五个主要的阶段。

  • 计划阶段

  • 测试阶段

  • 运行阶段

  • 弃用阶段

  • 废弃阶段

3、服务版本治理

新版本的前向兼容性,灰度发布等需要按照统一的策略进行管理。

4、服务注册中心

需要统一的服务注册中心支持服务的订阅发布和动态发现机制。

5、服务监控

服务监控中心需要对服务的调用时延、成功率、吞吐率等数据进行实时采样和汇总,通过图形化报表的形式展示,以便运维人员对服务的运行质量进行实时分析和掌控。

6、运行期服务质量保障

包括服务限流、服务迁入迁出、服务升降级、服务权重调整和服务超时控制等,通过运行期的动态治理,可以在不重启服务的前提下达到快速提升服务运行质量的目标。

7、快速的故障定界定位手段

  • 大规模分布式环境下海量业务/平台日志的采集、汇总和实时在线检索,支持多维度的条件检索、模糊查询,可以快速的在线查看各种系统运行日志,方便问题定位;

  • 分布式消息跟踪,通过调用链打通业务、服务调用和异常,发现线上系统故障源;通过在线和离线调用链大数据分析,得到链路各个依赖的稳定性指标,梳理依赖链路风险表,识别系统核心功能的服务调用依赖关系,评估可能的最大风险点,针对性改进以预防风险,同时为容量规划和扩容提供数据决策依据。

8、服务安全

服务安全访问策略有多种,例如可以通过动态生成令牌token的方式做安全访问授权,服务提供者动态生成token并告知服务注册中心,由注册中心告知是否告知消费方,这样就能在注册中心页面上做复杂的授权模型。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多