如果考虑采用微服务架构,原有的开发架构应该如何调整?

如果考虑采用微服务架构,原有的开发架构应该如何调整?

参与3

1同行回答

shaopingshaoping产品经理IBM混合云
在重构应用方面,可通过以下方法梳理微服务:(1)每个REST服务是一个潜在的微服务;(2)每个SOAP web服务或EJB是一个潜在的微服务,特别是无状态的session bean,需要将面向功能的接口重新设计为面向资产的接口,并使接口转变为RESTful形式;(3)使用领域驱动设计(domain-driven design...显示全部

在重构应用方面,可通过以下方法梳理微服务:(1)每个REST服务是一个潜在的微服务;(2)每个SOAP web服务或EJB是一个潜在的微服务,特别是无状态的session bean,需要将面向功能的接口重新设计为面向资产的接口,并使接口转变为RESTful形式;(3)使用领域驱动设计(domain-driven design)发现企业资产,这些资产可能是微服务。

在重构数据方面,需要考虑以下几个方面:(1)寻找与其他数据关联不大的数据孤岛,检查系统的实体-关系图;如果有与其他数据断开的数据,就是一个潜在的数据重构点;(2)数据表非规范化,对高规范化数据库中非规范化一些数据表以将数据重组为更大的逻辑块,其目的是增加数据冗余度使其更容易被打破;(3)反向批数据更新,对数据重构时需要考虑数据重构失败时可批量地将新数据反向导回旧的数据模式;(4)使用主数据管理,对被广泛使用的数据实体组成一个单一的一致性视图,并开发相应的微服务与主数据一起工作;(5)在SQL数据库中寻找存储在BLOB(二进制大对象)字段类型中的代码,转而将这些对象存储在NoSQL数据库中,例如以键值(Key-value)存储方式存储;(6)寻找活跃的记录模式,与其他无关的Flat对象,使用文档模式数据库进行存储,例如Cloudant或Mongo等。

微服务重构后还需要重新打包应用,包括:(1)分割应用的EAR文件并打包成独立的WAR文件;(2)应用“一个容器一个服务”,分别部署每个WAR文件至其自有的WebSphereLiberty实例运行时或Docker容器中;(3)分别构建、部署和管理,为每个WAR文件使用独立的DevOps管线,每个WAR文件独立伸缩和管理。

收起
软件开发 · 2017-07-27
浏览1153

提问者

airstuky
项目经理某金融银行
擅长领域: 数据库云计算服务器

问题来自

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2017-07-26
  • 关注会员:2 人
  • 问题浏览:3393
  • 最近回答:2017-07-27
  • X社区推广