【系统架构设计师-论文】SOA面向服务编程

论基于SOA面向服务编程在新媒体平台系统的实践

摘要

2021年12月,我所在的团队承接了某大学的媒体中心委托的《新媒体平台》的开发,我在项目中担任系统架构师,主要完成技术方案评估与实现,项目立项论证等工作。该系统以文章阅览功能为核心,实现用户对文章的发布订阅以及评论等功能。本文结合作者的实践,以《新媒体平台》为例,简要说明了SOA技术的概念,包含服务类型、主要技术以及实现方式,并详细说明了基于SOA理念的分层结构在新媒体平台系统上的实践。项目快速上线以来一致保持稳定运行,获得了用户的一致好评,证明了该架构设计成功提高了系统的重用性,达到服务重用、并行开发快速上线的目标。

正文

随着移动信息化技术的迅猛发展,自媒体平台日益增多,各种平台之间的切换十分繁琐,每次都要在不同的平台发布同一内容,不利于媒体中心实时发布信息和全校师生阅览且不便于管理,而校官网又不便于发布日常文章。为了解决这一问题,校媒体中心制定了校园专属媒体平台战略,根据这一战略要求,新媒体平台(以下简称为“NMS”系统)应运而生,将全校院系社团的动态集中于该系统上,降低了全校师生对文章内容的检索难度,使师生可以快速准确地了解学校的最新动态。NMS系统以文章阅览功能为核心,分为文章搜索模块、用户评论模块、文章审核模块、用户管理模块等。文章搜索模块主要负责为用户提供检索文章的接口;用户评论模块负责对于各个文章中不同用户的评论内容的管理;文章审核模块允许管理员对申请发布的文章内容合法性进行审核;用户管理模块负责对以注册的用户信息进行管理;社团管理模块提供各院系社团管理自己发布内容的功能。2021年12月,我有幸参与了项目前期的一些工作,担任系统架构设计师的职务,主要负责设计平台系统架构和安全体系架构。

SOA是一种组件模型,通过将应用程序划分为独立的、可重用的服务来构建模块化、可维护的系统,以此来提高系统的灵活性、可维护性和可扩展性。它的服务类型分为连接服务、业务服务、交互服务、流程服务、信息服务和协作服务。连接服务实现服务的接入,服务间的通信和交互,还提供安全性、可靠性、高性能的服务能力保障;业务服务为新建服务提供特定运行支持环境;交互服务实现人与服务之间的交互功能;流程服务是业务流程的运行环境,提供流程驱动、服务调用、事务管理等功能,支持按特定的顺序和特定的规则调用一组服务;信息服务指为其它服务提供数据访问及资源访问;协作服务包括通信代理和web服务代理,既可以实现组织之间的交互通信,也能实现组织内部的交互通信。

SOA的主要实现介绍分别为WebService和ESB。WebService由服务提供者、服务请求者、服务注册中心构成,支持服务发布、查找和绑定,基于XML标准,由web服务描述语言WSDL、简单对象访问协议SOAP、统一描述发现和集成协议UDDI组成。ESB企业服务总线是传统中间件技术与XML、web服务等技术结合的产物, 主要支持异构系统集成;ESB基于内容的路由和过滤,具备复杂数据的传输能力,并可以提供⼀系列标准接口。由于SOA架构可以将系统拆分成多个服务并行独立开发,提高开发效率并且实现降低耦合度,有效提高了可维护性、可扩展性和灵活性,且每个服务都可以进行复用,经过对项目的分析,我决定采用SOA架构进行开发。

服务提供者是服务的所有者,定义并实现服务,通过WSDL对服务的端点、标签、版本号等元数据进行详细、准确、规范地描述并发布,以便服务请求者进行访问调用。我们对用户需求进行了采集,开会讨论确定了对服务边界,同时考虑到太细的服务粒度可能导致过多的交互增加系统复杂度,因此划分了五个核心服务:文章资讯服务:NMS系统以文章阅览为主体,因此可以将其划分为一个独立的服务。该服务负责提供各种活动资讯内容,包括文字、图片、视频等多媒体形式。同时,该服务还可以根据用户兴趣和历史行为数据,利用推荐算法为用户推荐个性化的内容。社交互动服务:NMS系统也可以提供社交互动功能,例如评论、点赞、分享等。这些功能可以划分为一个独立的服务,以便用户可以随时随地进行社交互动,而不必每次都要加载新闻内容。用户个性化服务:NMS系统为用户建立个性化的信息库,利用推荐算法为用户推荐个性化内容。该服务可以划分为一个独立的部分,负责收集、存储和处理用户的兴趣爱好、行为数据等信息,以支持推荐算法的精准推荐。广告投放服务:NMS系统可以通过信息流广告等方式服务于校园后勤集团。因此,可以将其划分为一个独立的服务,负责投放广告和管理广告投放数据。该服务可以利用用户个性化服务提供的数据,将广告精准推送给目标用户群体。数据统计与分析服务:NMS系统需要实时监控和分析用户行为数据、广告投放数据等,以便及时调整推荐算法和广告策略。因此,可以将其划分为一个独立的服务,负责数据的收集、存储、分析和报告。项目小组一致通过了该服务划分,为构建松耦合、高内聚、可重用、灵活和可扩展的系统提供了有力的基础。

第二阶段的目标是完成请求注册中心的开发。服务注册中心是UDDI最核心的内容,是连接服务提供者和服务请求者的纽带,服务提供者在此发布他们的服务描述,服务请求者在服务注册中心查找他们需要的服务。通过它可以对系统的各个模块、服务进行相互独立达到松耦合,提高系统的可扩展性与可维护性,同时也实现了服务请求者与服务提供者之间的进一步解耦。考虑到服务注册中心要对服务信息进行注册存储,对服务请求做出相应,以及项目开发成本,我决定采用JUDDI进行开发。我将其作为一个私有的UDDI注册中心,通过配置数据源对接收到的请求进行散集接收并调用相应的UDDI函数进行处理,实现对服务请求者的应答。同时还配置了三个子模块,分别用来管理服务信息存储、认证和UUID的生成。除此之外,在后期维护过程中,我们还可以使用其提供的Java接口进行自定义开发扩展,有效的提高了系统的可维护性和可扩展性。

服务请求者是服务的使用者,通过查找、绑定、调用实现与服务交互的应用程序。可以采用SOAP协议向服务提供者发起访问,通过WebService技术在服务注册中心中获取相应的服务进行绑定使用。由于SOAP是采用XML格式化消息为服务请求提供通信支持,因此在服务请求者的开发过程中,我们使用Jax-ws快速创建SOAP服务消费者。Jax-ws是一组XmlWeb服务的API,运行时可以将API的调用转换为对应的SOAP消息,因此开发者不需要编写任何生成和处理SOAP消息的代码,大大提高开发效率。首先,我们需要创建并实现一个新的JAX-WS服务端点接口。然后在这个接口中,我们使用Zookeeper来获取配置信息,然后根据信息调用JUDDI中的服务并将接口发布,以便客户端通过接口生成SOAP消息并将其发送到服务器实现对服务的调用和处理。通过使用JAX-WS,开发者可以轻松地实现JAVA平台与其他平台之间的互操作,从而提高了系统的可扩展性和灵活性。

在架构决策阶段,我所选择的这种架构得到了了团队和校领导的认可和采纳,2022年6月,新媒体平台系统正式上线运行,至今已稳定运行。系统所采用的基于SOA架构开发方法使系统更易于维护,具有更好的可用性、伸缩性、灵活性,能够轻松的应对诸多突发情况。在降低维护难度和成本、方便扩展业务功能、提供系统安全性、稳定性等方面均表现出色,获得了领导和同事的好评。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值