文档章节

微服务究竟该如何理解

 透明的鱼
发布于 2017/08/01 14:35
字数 1145
阅读 1
收藏 0

在谈微服务之前我们需要先了解两个概念:SOA和ESB。

SOA

面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。

这是百度百科中给出的解释。简单来说,SOA可以理解为企业内部各类系统的集成,每个系统对外提供粗粒度的服务,这些服务都部署在一个中心平台上,这个平台就是ESB(Enterprise Service Bus)—企业服务总线。

这是我们对于SOA的理解,不难看到,ESB是一个很重的机制,首先他集成了多种异构系统,使得内部通讯方式复杂,协议众多。其次,ESB的高度中心化给企业带来了一定的单点故障的隐患,并且在ESB上统一部署服务,也一定程度上限制了服务的后期扩展。基于以上这些不足,微服务应运而生。

在微服务架构中,首当其冲强调的第一个重点就是,企业的业务系统要彻底的组件化,模块化,服务化。首先要把整体业务分割成一个个可以独立设计,开发,运行的小业务。这里的独立是指从业务层,应用层,到数据层,物理层都是独立的。这个就是微服务分散管理的思想。另一个重点就是每个独立的服务之间通过轻量级的设备与HTTP型的API进行沟通,解决了传统SOA架构中ESB机制下内部通讯复杂,协议众多,调用困难的难点。其实对于微服务来说,每个独立的业务所提供的接口能力本身其实就是这个业务所能提供的服务,服务和业务是一起部署的,服务通过已有的接口能力发布和暴露出来。

谈完了微服务的概念,最后让我们来聊聊微服务的优缺点和它能给企业带来的收益。

首先微服务的优势显而易见—独立。微服务的架构下每个服务都是独立的,可以由不同的团队独立开发,使得开发团队可以关注于这一个业务功能,提高开发效率,并且因为它的独立性,使得每个服务可以应用不同的语言和开发环境进行开发。而且微服务架构并不是完全的独立,它强调每个服务间是松散耦合的,服务间通过轻量级的接口进行沟通,各自独立存在的同时还保证了服务之间的耦合关联。能完成传统SOA架构的功能的同时,在很大程度上解决了SOA架构中的难点。

有优势就有劣势,对于微服务架构来说,首当其冲的缺点就是,不同的团队之间要解决沟通上的冲突。团队多了,交流就显得更加重要,甚至很多专家认为实现微服务需要DevOps的同步推进。其次就是技术上的难点,分割成一个个独立的业务模块以后,服务间进行通信的接口设计就变得尤为重要。最后就是微服务架构的部署,如何科学合理的将微服务架构下的系统部署到服务器上,在保证各个服务高效运行的同时,尽可能的降低成本,是采用微服务架构的企业要考虑的重点。

最后,给大家推荐一个采用微服务架构设计开发的项目管理工具—华为软件开发云,这是一款涵盖软件开发全生命周期管理的工具,面向开发者提供软件开发云服务,即开即用,随时随地在云端进行项目管理、配置管理、代码检查、流水线、编译、构建、部署、测试、发布等,让开发者快速而又轻松地开启云端开发之旅。

© 著作权归作者所有

共有 人打赏支持
粉丝 0
博文 66
码字总数 103427
作品 0
阿里巴巴前架构师 360 度无死角剖析微服务

微服务是当前软件架构领域非常热门的词汇,在社区中也有很多热烈的讨论。因此,在 OSC 第 130 期高手问答中,我们策划的主题是“究竟什么才是微服务”,并邀请了黄勇作为高手嘉宾。 黄勇,现...

OSC源创君
2016/11/09
15.5K
29
阿里巴巴前架构师 360 度无死角剖析微服务

摘要: 阿里巴巴前架构师对于微服务毫无保留的分享,360 度无死角剖析微服务 微服务是当前软件架构领域非常热门的词汇,在社区中也有很多热烈的讨论。因此,在 OSC 第 130 期高手问答中,我们...

yuanzhitang
2016/11/28
0
0
OSC 第 130 期高手问答 — 究竟什么才是微服务?

OSCHINA 本期高手问答(10 月 17 日-10 月 23 日) 我们请来了@黄勇 为大家解答关于微服务架构方面的问题。 黄勇,现任特赞公司 CTO,曾任阿里巴巴公司系统架构师。对微服务架构与大数据技术有...

局长
2016/10/17
12.3K
152
Java微服务开发指南 — 使用Spring Boot构建微服务

Java微服务开发指南 — 使用Spring Boot构建微服务 Harries Blog™2017-11-0615 阅读 ACESpringAppcatbeanAPIbuildCassandra 使用 Spring Boot 构建微服务 Spring Boot是一个广泛用来构建Jav...

Harries Blog™
2017/11/06
0
0
微服务指南走北(五):什么样的服务才可以说是微服务?

最近有朋友提出了问题:“是不是拥有了服务发现就是微服务了?”,对于这个问题,很难回答,毕竟微服务的定义在每个人心里都是不一样的,就像“互联网思维”一样,我们说得清“互联网”,却总...

gsying1474
2017/04/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

配置Spring的注解支持

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。 配置Spring的注解支持 以上也提到了使用注解来配...

凯哥学堂
33分钟前
0
0
关于Spring Aop存在的一点问题的思考

在本人前面的文章Spring Aop原理之切点表达式解析中讲解了Spring是如何解析切点表达式的,在分析源码的时候,出现了如下将要讲述的问题,我认为是不合理的,后来本人单纯使用aspectj进行试验...

爱宝贝丶
34分钟前
0
0
JavaScript 概述

JavaScript是面向Web的编程语言。绝大多数现代网站都使用了JavaScript,并且所有的现代Web浏览器——基于桌面系统、游戏机、平板电脑和智能手机的浏览器——均包含了JavaScript解释器。这使得...

Mr_ET
今天
0
0
Java Run-Time Data Areas(Java运行时数据区/内存分配)

Java运行时数据区(内存分配) 本文转载官网 更多相关内容可查看官网 中文翻译可参考 2.5. Run-Time Data Areas The Java Virtual Machine defines various run-time data areas that are use...

lichuangnk
今天
0
0
docker learn :services docker-compose.yml

docker-compose.yml定义了服务的运行参数 version: "3" services: web: # replace username/repo:tag with your name and image details image: hub.c.163.com/dog948453219/friendlyhello d......

writeademo
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部