SOA对微服务的残余影响

近日,Tareq Abedrabbo在伦敦2017 µCon微服务大会上说,SOA对微服务架构设计的残余影响仍然存在,包括技术选型和组织方面的问题。最直接的一个例子就是大多数企业仍然区分对待架构师和开发人员,架构师负责出规范,开发人员负责实现。

OpenCredo CTO Abedrabbo在大公司和小公司都工作过,这些公司在向微服务架构迁移的过程中仍然受到SOA的影响。他在演讲中对SOA和微服务进行了有趣的对比,不过他也强调,尽管SOA存在问题,但不能把全部责任都推给SOA。

重用性与变更管理。Abedrabbo认为,重用性之所以对SOA来说十分重要,主要是因为SOA缺乏成熟的变更管理工具。服务一旦部署好了,就不太愿意做出变更,因为成本太高。而微服务在变更管理方面具有一定的优势,因为对微服务做出变更的成本要小得多。

集成与组合。SOA架构强调的是集成,客户端可以向服务器端发送任何格式的数据,包括XML,服务器端负责解析和处理这些数据。而在微服务架构里则恰好相反,微服务注重组合,服务调用端需要自己知道如何调用其他服务。Abedrabbo对此总结说,集成增加复杂性,而组合降低复杂性。

技术重用与功能重用。SOA注重技术重用,我们总是希望尽可能多地重用一个服务,尽管对服务做出变更有很大阻力。而微服务架构更注重让小型的服务专注于特定的业务功能上。

静态与动态。SOA需要处理所有的事情,一个SOAP调用不仅要处理业务逻辑,还要处理安全和事务方面的问题。而微服务更加动态,微服务生态系统的不同部分负责处理不同的问题。

有SOA背景的开发人员在构建微服务时容易使用反模式,比如分布式单体,他们只是对一个边界进行无机拆解。对一个已有的单体进行解耦时,如果不考虑边界问题就很容易犯这个错。在与遗留系统进行集成时太过关注底层的解耦,但没有考虑到通信保证、幂等性等因素,这也是很常见的问题。这样的系统只会增加复杂性,体现不出微服务的优势。

Abedrabbo给出了一些建议用于解决这方面的问题:

  • 采用领域驱动设计。使用微服务实现领域逻辑,避免单纯地从技术角度设计可重用的微服务。

  • 不要使用规范的数据模型。规范的数据模型只会阻碍微服务系统的演化,所以我们应该使用局部数据视图。

  • 正常化元数据,并将它们从其他数据中分离出来。

  • 使用正确的工具。比如,每个微服务都应该有自己的数据库。多个服务共享一个数据库是一种反模式,不过如果使用图数据库或许会是个好办法。

明年的微服务大会将于2018年11月5号至6号召开。

原文:http://www.infoq.com/cn/news/2017/11/soa-impact-microservices


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/322857.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hadoop生态Flume(四)拦截器(Interceptor)介绍与使用(2)

转载自 Flume中的拦截器(Interceptor)介绍与使用(二) lume中的拦截器(interceptor),用户Source读取events发送到Sink的时候,在events header中加入一些有用的信息,或者对…

协作更进一步:微软隆重介绍Visual Studio动态分享功能

微软刚刚在 Visual Studio Code 网站上宣布了“动态分享”(Live Share)功能,开发者们可以在 VS 2017 或 VS Code 中体验全新的实施协作。微软表示,Live Share 可让团队在相同的代码库上启用快速协作,而无需同步代码或配…

python打包exe文件

首先安装pyinstaller pip3 install pyinstaller接着导报指定文件 pyinstaller.exe -F 文件路径文件名 举例 pyinstaller.exe -F C:\Users\Tecna1205\Desktop\工作目录\Python工作目录\测试\3.3\test\tk.py 如果有图形界面,不想打开命令行,可在打包命令…

使用MS Test做单元测试

声明:本篇博客翻译自:http://www.c-sharpcorner.com/article/unit-testing-with-ms-tests-in-c-sharp/ 写在翻译之前: 依然清晰的记得刚工作的第一个项目中,在完成一个功能模块开发后,师傅让我把代码做一下单元测试。当…

Vue组件传参

父组件向子组件传参 数据&#xff1a; 父组件 <test :message"msg"></test>msg: Hello uniApp子组件&#xff08;test.vue&#xff09; <text>{{message}}</text>props:["message"]子组件向父组件传参 子组件&#xff1a; &…

如果不懂Service mesh,就不要谈微服务了

提到微服务&#xff0c;spring cloud等经典框架被使用的最为广泛&#xff0c;但是在2016年才被提起的Service Mesh&#xff0c;已经被Paypal、Lyft、Ticketmaster和Credit Karma等等一些大流量平台所使用&#xff0c;在生产应用中添加了Service mesh。今年随着Linkerd传入国内&…

使用AspectCore动态代理

前言 最近越来越多的同学关注到AspectCore&#xff0c;并且提出不少中肯的建议&#xff0c;其中最多的提议是希望能够看到更多的关于AspectCore使用方式的文章和Demo。那么在这篇文章里&#xff0c;我们就来聊聊AspectCore核心之一的动态代理。 动态代理 在.NET平台中&#xff…

已经安装完成mysql后wamp怎么配置

如果之前安装过mysql&#xff0c;然后想要安装wamp&#xff0c;那么怎么配置呢 先安装好wamp&#xff0c;然后在以下目录中修改my.ini 将密码改为自己的mysql密码即可 这时你发现启动wamp还是黄的 不要慌&#xff0c;因为你已经安装过了wamp&#xff0c;所以wamp自己的mys…

通过 Visual Studio 的“代码度量值”来改进代码质量

1 软件度量值指标 1.1 可维护性指数 表示源代码的可维护性&#xff0c;数值越高可维护性越好。该值介于0到100之间。绿色评级在20到100之间&#xff0c;表明该代码具有高度的可维护性&#xff1b;黄色评级在10到19之间&#xff0c;表示该代码适度可维护&#xff1b;红色评级在0…

php如何接收前端返回的各种类型的数据

之前学习node后端的时候&#xff0c;因为始终无法在网上找到接收json数据的函数&#xff0c;所以后来就放弃了。最近又心血来潮&#xff0c;想学习php. 这次已经有了之前学习php的基础&#xff0c;所以直接入手thinkphp5.0 这次php的学习&#xff0c;主要是为了解决之前遗留的问…

ASP.NET Core 认证与授权[5]:初识授权

经过前面几章的姗姗学步&#xff0c;我们了解了在 ASP.NET Core 中是如何认证的&#xff0c;终于来到了授权阶段。在认证阶段我们通过用户令牌获取到用户的Claims&#xff0c;而授权便是对这些的Claims的验证&#xff0c;如&#xff1a;是否拥有Admin的角色&#xff0c;姓名是否…

uni-app打包h5

如果我们想打包成直接浏览的h5&#xff0c;我们需要配置manifest.json这个文件&#xff0c;在其中的h5配置中加入publicPath配置&#xff0c;配置如下&#xff1a; 代码为&#xff1a; "h5" : {"publicPath": "./"},配置好这个后&#xff0c;以后…

[52ABP实战系列] .NET CORE实战入门视频课程出来啦

“ .NET CORE实战入门视频&#xff0c;要是有讲的不好的地方&#xff0c;还请留言。” 早安&#xff01; 各位道友好&#xff0c;.NET CORE入门视频的第一章已经录制完毕了。视频会放在传课网、网易云课堂及segment fault。 本来想的是第一章合计6个小节就可以播放完毕的&#…

ASP.NET Core缓存静态资源

背景 缓存样式表&#xff0c;JavaScript或图像文件等静态资源可以提高您网站的性能。在客户端&#xff0c;总是从缓存中加载一个静态文件&#xff0c;这样可以减少对服务器的请求数量&#xff0c;从而减少获取页面及其资源的时间。在服务器端&#xff0c;由于它们的请求较少&am…

【程序员】保持一颗虚心好学的心态去敲代码

最近&#xff0c;我感觉是自己突破最大的一段时间&#xff0c;为什么呢&#xff1f;主要是打通了接口这一块&#xff0c;就是用postman发送各种数据&#xff0c;我都能用后端接受到相关数据&#xff0c;并且解析出来。 在这之前我尝试过spring boot 和node&#xff0c;前者是太…

跟着老桂学ASP.NET Core 2.0

.net core作为微软开发技术中跨平台的利器&#xff0c;2.0的发布已经有一段时间了&#xff0c;asp.net core是新一代微软的BS开发框架&#xff0c;同时兼容.net core和.net framework&#xff0c;它的出现&#xff0c;使基于微软体系的BS开发迎来新的契机&#xff0c;开源&…

如何安装并启动django

这里我用的是pip3&#xff0c;一般没装两个版本的用pip就行了 安装 pip3 install django如何检测 python3 -m django --version显示版本号即可 如何创建并启动项目 创建 django-admin startproject HelloWorld启动 然后cd到HelloWorld目录里 python manage.py runserver…

ASP.NET Core 认证与授权[6]:授权策略是怎么执行的?

在上一章中ASP.NET Core 认证与授权[5]:初识授权&#xff0c;详细介绍了 ASP.NET Core 中的授权策略&#xff0c;在需要授权时&#xff0c;只需要在对应的Controler或者Action上面打上[Authorize]特性&#xff0c;并指定要执行的策略名称即可&#xff0c;但是&#xff0c;授权策…

.net core2.0下使用Identity改用dapper存储数据

前言、 已经好多天没写博客了&#xff0c;鉴于空闲无聊之时又兴起想写写博客&#xff0c;也当是给自己做个笔记。过了这么些天&#xff0c;我的文笔还是依然那么烂就请多多谅解了。今天主要是分享一下在使用.net core2.0下的实际遇到的情况。在使用webapi时用了identity做用户验…

如何解决vuepress部署出现样式问题

以前在安装hexo的时候出了样式问题&#xff0c;现在用vuepress也出现了相同的问题。 本地测试完全可以 然而打包之后就彻底乱了 即使是自己本地打包成dist之后也会出现相同的问题 有点困扰&#xff0c;应该是打包配置的问题 通过修改index.html里的内容。将/改为./ 发现部…