springcloud学习手册-什么是微服务?

导读 | 微服务

在介绍springcloud之前,先整体认识一下,什么是微服务?

、系统演进的历程

系统演进的历程主要分为四个部分,MVC架构》RPC构架》SOA架构》微服务架构,大家可以在网上查一下前三种构架,这里咱们只是重点介绍微服务,此处省略简单介绍一下,如下是传统应用架构的主要结构图:

二、微服务与传统巨石应用的区分是什么?

传统巨石应用(monolith)

web应用程序发展的早期,大部分web工程是将所有的功能模块(service side)打包到一起并放在一个web容器中运行,很多企业的Java应用程序打包为war包部署到容器运行。其他语言(Ruby,Python或者C++)写的程序也有类似的问题。这种将所有功能都部署在一个web容器中运行的系统就叫做巨石型应用。那传统应用水平扩展后有什么效果呢,如下是传统应用架构水平扩展的主要结构图:

传统巨石应用(monolith)好处与不足之处

好处:单个应用设计编程、容易测试、因为是单体程序可直接打成一个完整的包,部署web容器中,即可运行。

不足之处:单体应用随着业务和功能不不断增加,代码量会增多,代码量增多后维护不容易,同时如果部署的话部署打包时间会增长,最麻烦的是如果业务功能有变更,修改代码成本会增大,同时单体应用对资源有一定的要求。

微服务的动机,就是为了解决单体应用的不足,从而把单体应用拆分成多个微服务的情况下产生的。

三、微服务的定义

微服务的概念源于2014年3月Martin Fowler所写的文章。

微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调,互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于HTTP协议的RESTful API)。每个服务都围绕着具体业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。另外,应当尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言,工具对其进行构建。

如下是微服务架构的主要结构图:

微服务架构的优点与缺点

优点

  • 小且专注于做好一件事情,每个服务内聚并且小。
  • 独立部署,可以根据自己的需要部署到合适的硬件服务器上;
  • 轻量级的通信机制;
  • 松耦合,程序员可对单个服务进行开发、维护,同时每个服务可以采用不同语言开发;

缺点

  • 依赖服务接口变更导致,服务接口管理麻烦,接口变更跟踪难度增大,依赖服务调试难度增大。
  • 部分模块重复构建,安全认证,配置日志方面问题。
  • 分布式带来的问题,事务问题,依赖服务间不稳定,需要引入异步模式。
  • 运维复杂度加大,部署数量倍增,监控进程倍增,故障定位难,问题追溯难。

声明:文章属于个人原创,转载请注明文章出处

原文发布于微信公众号 - 全华班(quanhuaban)

原文发表时间:2017-12-05

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算D1net

亚马逊云平台的迁移过程

最近3个月变化很多,离开呆了5年多的北京,开始英国的工作和生活。到这之后基本在做系统向亚马逊云平台的迁移,踩了不少坑,收获也很多。由于系统的迁移涉及各个常见的架...

3489
来自专栏全华班

springcloud学习手册-什么是微服务?

在介绍springcloud之前,先整体认识一下,什么是微服务?

1898
来自专栏Golang语言社区

Terratest:一个用于自动化基础设施测试的开源Go库

Gruntwork开源了他们的Go框架Terratest。该框架可以用于编写测试基础设施的自动化测试。该库内置了对Terraform和Packer的支持。

1093
来自专栏大数据文摘

520 | 机器人竟然对我表白了?!用Python假装自己有女朋友(附代码)

1284
来自专栏鹅厂网事

挖掘故障中的金矿----记一次故障的详细分析

“鹅厂网事”由深圳市腾讯计算机系统有限公司技术工程事业群网络平台部运营,我们希望与业界各位志同道合的伙伴交流切磋最新的网络、服务器行业动态信息,同时分享腾讯在网...

1748
来自专栏马哥教育

零基础到精通Linux,从这篇文章开始

正好在最近,看到了一篇不错的资料,其中对于Linux入门学习的描述极其详尽,因此特别摘抄其中段落,制作成思维导图分享给大家。

53110
来自专栏章鱼的慢慢技术路

做游戏服务器端开发时的一些收获与总结

在此我的想法是在LeetCode上刷标签为哈希表(hashtable)、排序(sort)和搜索(search)的题型,同时还可以在HankerRank和Leet...

691
来自专栏性能与架构

构建可伸缩的Web架构

互联网产品的一个特点是开始的时候规模都很小, 几个人的小团队,少量的启动资金,就开始运营了 刚开始的时候,用户也少,所以只要一台服务器就可以应付所有的用户访问...

3856
来自专栏企鹅号快讯

后台设计的一些总结

想要设计一个好用的后台,其实没那么简单。 以下算是我针对交接出去项目所做后台的一个总结吧。 一.整体设计思路: 1.设计后台前,需要了解整个业务需求,最好通过脑...

2438
来自专栏IT大咖说

VMware云管平台运维管理

摘要 跨 SDDC 和多云环境从应用到基础架构的智能 IT 运维管理。与 vRealize Log Insight 和 vRealize Business fo...

3795

扫码关注云+社区