服务导向架构(SOA)设计与API最佳实践
1. 服务概述
服务可以简单理解为功能的垂直切片,包含数据库、应用代码和缓存层。在服务内部,应遵循特定的设计原则,而面向服务的架构(SOA)在外部也带来了诸多额外优势:
|特性|说明|
|----|----|
|可理解性|每个服务负责单一业务功能,代码量被精简到单人可理解的程度。|
|隔离性|服务的应用代码与其他应用代码分离,数据库也相互独立。只有服务应用本身能直接访问其持久化和缓存层,服务是数据的守护者。|
|统一访问|通过发布的API访问服务,服务也通过其他服务的API访问它们。API是访问服务数据的唯一接口。|
|信任性|服务位于防火墙内,信任任何有物理访问权限的客户端发起的服务请求。|
|可扩展性|隔离性和统一访问使得更易保证缓存的正确性,持久化数据的变更点减少到服务代码中。因此可最大化利用缓存,减少对数据库资源的需求,通过增加应用服务器就能让应用处理更大的负载。|
2. 服务设计练习
为了更好地理解和应用服务导向架构,可进行以下练习:
1. 检查应用的功能垂直切片,确定哪些适合分离为独立服务,并说明原因。
2. 对于每个确定的候选服务,明确驱动其功能的数据库表。
3. 对于每个表,找出进出服务的外键,并思考如何处理隔离数据库中的外键。
3. SOA通信方式
在SOA中,有多种行业标准的服务间通信方法可供选择,如XML - RPC、SOAP和REST。在比较这些方法之前,先了解良好服务设计应具备的两组属性:
- 第一组属性确保服务可维护且能与当前和未来的客户端互操作。
超级会员免费看
订阅专栏 解锁全文
1866

被折叠的 条评论
为什么被折叠?



