SOA与微服务

  • 微服务并非它的体积足够小,而是它的责任足够单一,很多人误解了「微」的真实含义,认为服务拆分得足够小就是微服务了,其实并非这样。此外,「微」还有“微不足道”的意思,也就是说,某个服务出现故障,它不会影响整个系统。
  • 微服务并非细粒度服务的组合,也就是说,粒度要细到什么程度,这取决于对业务功能的把控能力。此外,微服务是一种架构思想,包括看得见的微服务,还包括看不见的基础设施和自动化技术作为支撑。
  • 目前市面上常用的微服务架构dubbo+zk,spring cloud
  • 微服务的核心:注册中心(Service Registry)、服务提供方(service provider)、服务消费方(service consumer)。不过现在为了方便,又提出了网关的(service gateway)的概念,配动自动完成服务的注册和发现。
  • 从什么角度能区分出或者划分微服务和 RPC 分布式之间的区别或者关系?

微服务是一种应用架构模式,而 RPC 是一种远程调用方式,它们是不一样的概念;而在微服务中会出现服务之间的调用,为了确保性能,我们一般采用 RPC 来调用。

  • 微服务实现系统的模块化,便于公共模块复用和水平扩展,但目前的系统规模其实都很小,这种情况是不是不适合使用微服务?

我认为微服务架构用于业务较复杂或目前业务简单但将来有可能变得复杂的架构,建议视具体情况来确定合理的架构,不要为了微服务而去微服务。

  • 微服务与 SOA 到底有什么区别,各自的应用场景是什么?到底在什么样的情况才适合使用微服务架构?

微服务是SOA的一种轻量级的解决方案,其本质还是SOA,只是更容易落地而以。

对于满足以下条件可以考虑使用微服务:

1. 应用变得越来越大
2. 项目存在多种开发语言
3. 经典架构模式太重
4. 修改一个bug需要平滑升级
5. 需要对系统细粒度监控
6. 提升系统可用性,如果一个系统挂了,不会对整个业务产生致命影响
  • 服务与服务之间的事务怎么做?

在微服务架构中,建议尽量避免服务之间的调用,因此服务粒度的切分是至关重要的;服务间的调用会产生分布式事务问题,建议采用“最终一致性”方法来确保分布式事务,业界有两种常用做法:CQRS 和 Event Sourcing。

  • 如何使用事务补偿模式解决分布式事务问题?

事务补偿机制说简单点就是,在应用程序中通过代码的方式做到数据的还原。一般情况下,我们需借助消息队列与日志追踪等方式来实现。

  • 微服务在事务控制方面、容错方面有什么较好的实践方式?
1、微服务的事务控制本质上是分布式事务控制,建议使用“最终一致性”来确保。
2、在容错方面,需要有基础设施平台的支撑,比如服务网关的熔断机制
  • 微服务拆分有没有什么原则要点?
1. 微服务业务拆分可按整体业务组件来拆分,也可按单一业务功能来切分。建议切分步骤从粗到细,逐步细化,否则开始就过细,导致依赖性太高,增加复杂度。
2. 拆分服务时需降低彼此之间的耦合性,尽可能一个服务只做一件事情,即“单一职责原则”。
  • 怎样来控制微服务的粒度?就是有没有什么样的原则和最佳实践来判断一个功能(接口)是应该属于 A 服务还是应该属于 B 服务。

微服务的粒度控制取决于我们对业务的理解与把控能力,一切所谓的原则都是不靠谱的。

微服务需要考虑服务多版本问题,尤其是服务升级时,需要做到平滑,对整体系统没有任何影响。

原文发布于微信公众号 - JAVA高级架构(gaojijiagou)

原文发表时间:2018-07-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏人人都是极客

物联网通信架构总结

本文从宏观上介绍IoT的通信架构,让大家都日渐频繁的物联网设备工作原理有一个初步的理解,主要分为了直连、网关、云三种模式。

2193
来自专栏web前端教室

vue的火热不是没有道理的,确实容易上手 &&电商作业检查 -- 王x

今天给同学们讲解了vue.js的相关入门知识,主要集中在模板语法、条件、循环、计算、样式还有事件处理等相关知识,以及它的双向绑定。 用的时候没什么感觉,但在讲的...

2425
来自专栏风中追风

分布式基础_为什么要用分布式架构,又为什么要用微服务?

我用了dubbo后,我就可以这样调接口,巴拉巴拉,说到底还是争不过面试官问:那照你这么说,我不用分布式架构也可以完成啊,你只是说了用了分布式架构后业务处理的方法...

49212
来自专栏杨建荣的学习笔记

浅谈zabbix和Grid control (r6笔记第25天)

在IT行业始终在进行着开源和商业的竞争而且双方火力都不差,开源的受众更多是中小企业,免费开源而且用户基数庞大,商业的用户都是一些大中型企业,求稳求成熟的服务。 ...

3587
来自专栏Linux Python 加油站

Python自动化测试框架有哪些?

来源:马哥教育链接:https://mp.weixin.qq.com/s/PvlaRmPmGc5b1XIMqMMslA令开发者万分高兴的是,开发自己的测试框架的...

1914
来自专栏杨建荣的学习笔记

MySQL中需要考虑的一些工具

在做一些技术规划的时候,会发现有一些事情需要前置,比如说MySQL里面的工具,如果等到实际碰到了各色的问题再来统一,就比较难了。有沟通成本,人力成本,技术沉...

4006
来自专栏软件测试经验与教训

性能测试常见面试题

6946
来自专栏北京马哥教育

Python自动化测试框架有哪些?

令开发者万分高兴的是,开发自己的测试框架的日子终于结束了。以前,开发团队接手一个项目并开始开发时,除了项目模块的实际开发之外,他们不得不为这个项目构建一个自动化...

870
来自专栏Rainbond开源「容器云平台」

好雨云资深架构师祁世垚参加Qcon演讲,现场反响热烈

1314
来自专栏腾讯云技术沙龙

朱展:腾讯云小程序解决方案

大家下午好,我今天给大家带来的分享主题是腾讯云小程序解决方案。首先做一个自我介绍,我叫朱展,来自腾讯云,目前负责腾讯云小程序解决方案,从事设计开发的工作。

1.6K14

扫码关注云+社区

领取腾讯云代金券