随着技术的不断进步,我们的技术框架也需要不断与时俱进。近些年,SOA、微服务的思想很火,下面我们简单介绍下SOA和服务治理的一些原则,希望可以让大家得到思考。 一、面向服务设计的原则服务可复用:不管是否存在即时复用的机会,服务均被设计为支持潜在的可复用 服务共享一个标准契约:为了与服务提供者交互,消费者需要导入服务提供者的服务契约,这个契约可以是一个IDL文件,Java接口定义,WSDL文件,甚至是接口说明文档 服务是松耦合的:服务被设计为功能相对独立,尽量不依赖其他服务的独立功能提供者 服务是底层逻辑的抽象:只有经服务契约所暴露的服务队外部世界可见,契约之外底层的实现逻辑是不可见的 服务是可组合、可编排的:多个服务可能被编排组合成一个新的服务,这允许不同逻辑抽象的自由组合,促进服务的复用 服务是自治的:逻辑由服务所控制,并位于一个清晰的边界内,服务已经在边界内被控制,不依赖其他服务 服务是无状态的:服务应当不需要管理状态信息,因此能够维持送耦合性。服务应该被尽可能设计成无状态,即便意味着要将状态管理移至他处 服务是可被自动发现的:服务发布上线后,允许被其他消费者自动发现;当服务提供者下线后,允许消费者接收服务下线通知。
二、服务治理SOA服务化之后,应用服务化之后给系统运维带来很大挑战: 分布式框架下的服务调用性能 服务化架构如何支持线性扩展 如何实现高效、实时的服务多维度监控 大规模分布式环境下的故障快速定界和定位 分布式环境下海量日志在线检索、模糊查询 服务的流控、超时控制、服务升降级等管控手段 服务的划分原则,如何实现最大程度复用
此时,SOA服务治理是关键。SOA服务治理主要包括如下几个方面: 1、服务定义 SOA治理最基础的方面就是监视服务的创建过程。必须对服务进行标识,描述其功能,确定其行为范围并设计其接口。创建服务时需要与使用这些服务的团队进行协调,以确保服务能够满足消费者需求,避免重复工作。 2、服务生命周期管理 服务的生命周期通常有五个主要的阶段。 3、服务版本治理 新版本的前向兼容性,灰度发布等需要按照统一的策略进行管理。 4、服务注册中心 需要统一的服务注册中心支持服务的订阅发布和动态发现机制。 5、服务监控 服务监控中心需要对服务的调用时延、成功率、吞吐率等数据进行实时采样和汇总,通过图形化报表的形式展示,以便运维人员对服务的运行质量进行实时分析和掌控。 6、运行期服务质量保障 包括服务限流、服务迁入迁出、服务升降级、服务权重调整和服务超时控制等,通过运行期的动态治理,可以在不重启服务的前提下达到快速提升服务运行质量的目标。 7、快速的故障定界定位手段 大规模分布式环境下海量业务/平台日志的采集、汇总和实时在线检索,支持多维度的条件检索、模糊查询,可以快速的在线查看各种系统运行日志,方便问题定位; 分布式消息跟踪,通过调用链打通业务、服务调用和异常,发现线上系统故障源;通过在线和离线调用链大数据分析,得到链路各个依赖的稳定性指标,梳理依赖链路风险表,识别系统核心功能的服务调用依赖关系,评估可能的最大风险点,针对性改进以预防风险,同时为容量规划和扩容提供数据决策依据。
8、服务安全 服务安全访问策略有多种,例如可以通过动态生成令牌token的方式做安全访问授权,服务提供者动态生成token并告知服务注册中心,由注册中心告知是否告知消费方,这样就能在注册中心页面上做复杂的授权模型。
|