微服务一站式解决方案Spring Cloud
什么是微服务架构
我们知道分布式强调系统的拆分,其实微服务也是强调系统的拆分,微服务架构属于分布式架构的范畴;
并且到目前为止,微服务并没有一个统一的标准的定义,那么微服务究竟是什么?
微服务一词源于Martin Fowler(马丁.福勒)的名为 Microservices 的博文, 可以在他的官方博客上找到这篇文章:http://martinfowler.com/articles/microservices.html
中文翻译版本:https://www.martinfowler.cn/articles/microservices.html
简单地说, 微服务是系统架构上的一种设计风格, 它的主旨是将一个原本独立的系统拆分成多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间通过基于HTTP的RESTful API进行通信协作;
被拆分后的每一个小型服务都围绕着系统中的某一项业务功能进行构建, 并且每个服务都是一个独立的项目,可以进行独立的测试、开发和部署等;
由于各个独立的服务之间使用的是基于HTTP的JSON作为数据通信协作的基础,所以这些微服务可以使用不同的语言来开发;
微服务架构的优缺点
1、我们知道微服务架构是将系统中的不同功能模块拆分成多个不同的服务,这些服务进行独立地开发和部署,每个服务都运行在自己的进程内,这样每个服务的更新都不会影响其他服务的运行;
2、由于每个服务是独立部署的,所以我们可以更准确地监控每个服务的资源消耗情况,进行性能容量的评估,通过压力测试,也很容易发现各个服务间的性能瓶颈所在;
3、由于每个服务都是独立开发,项目的开发也比较方便,减少代码的冲突、代码的重复,逻辑处理流程也更加清晰,让后续的维护与扩展更加容易;
4、微服务可以使用不同的编程语言进行开发;
但是在系统架构领域关于微服务架构也有一些争论,有人倾向于在系统设计与开发中采用微服务架构实现软件系统的低耦合,被认为是系统架构的未来方向,Martin Fowler(马丁.福勒)也给微服务架构很高的评价;
同时,对微服务架构也有人持反对观点,他们表示:
1、微服务架构增加了系统维护、部署的难度,导致一些功能模块或代码无法复用;
2、随着系统规模的日渐增长,微服务在一定程度上也会导致系统变得越来越复杂,增加了集成测试的复杂度;
3、随着微服务的增多,数据的一致性问题,服务之间的通信成本等都凸显了出来;
所以在系统架构时也要提醒自己:不要为了微服务而微服务。
为什么选择Spring Cloud构建微服务
微服务一词是Martin Fowler(马丁.福勒)于2014年提出来的,近几年微服务架构的讨论非常火热,无数的架构师和开发者在实际项目中实践着微服务架构的设计理念,他们在微服务架构中针对不同应用场景出现的各种问题,也推出了很多解决方案和开源框架,其中我们国内的互联网企业也有一些著名的框架和方案;
整个微服务架构是由大量的技术框架和方案构成,比如:
服务基础开发 Spring MVC、Spring、SpringBoot
服务注册与发现 Netflix的Eureka、Apache的ZooKeeper等
服务调用 RPC调用有阿里巴巴的Dubbo,Rest方式调用有当当网Dubbo基础上扩展的Dubbox
分布式配置管理 百度的Disconf、360的QConf、淘宝的Diamond、Netflix的Archaius等
负载均衡 Ribbon
服务熔断 Hystrix
API网关 Zuul
批量任务 当当网的Elastic-Job、Linkedln的Azkaban
服务跟踪 京东的Hydra、Twitter的Zipkin等
但是在微服务架构上,几乎大部分的开源组件都只能解决某一个场景下的问题,所以这些实施微服务架构的公司也是整合来自不同公司或组织的诸多开源框架,并加入针对自身业务的一些改进,没有一个统一的架构方案;
所以当我们准备实施微服务架构时,我们要整合各个公司或组织的开源软件,而且某些开源软件又有多种选择,这导致在做技术选型的初期,需要花费大量的时间进行预备研、分析和实验,这些方案的整合没有得到充分的测试,可能在实践中会遇到各种各样的问题;
Spring Cloud的出现,可以说是为微服务架构迎来一缕曙光,有SpringCloud社区的巨大支持和技术保障,让我们实施微服务架构变得异常简单了起来,它不像我们之前所列举的框架那样,只是解决微服务中的某一个问题,而是一个解决微服务架构实施的综合性解决框架,它整合了诸多被广泛实践和证明有效的框架作为实施的基础组件,又在该体系基础上创建了一些非常优秀的边缘组件将它们很好地整合起来。
加之Spring Cloud 有其Spring 的强大技术背景,极高的社区活跃度,也许未来Spring Cloud会成为微服务的标准技术解决方案;

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Scrum敏捷开发工具Leangoo
为什么选择 Leangoo? 很简单,因为它够简洁,够轻量,上手够快! 因为我们的工作中有各种事物要处理,我们需要这样的敏捷开发工具来帮助我们解决问题并清晰的展开工作。Leangoo可以帮助我们管理事务,需求管理,迭代管理,缺陷管理,测试管理,排列优先级等,随时随地可以了解到团队以及项目的进展情况。 可以在Leangoo中,定制你和团队的工作流,任务分配,实时同步,每个成员都可以最快速度了解到被分配的任务,与团队更好的协作。 所有的项目进度,需求趋势,缺陷趋势都可以一目了然。 也可以利用Leangoo的思维导图,可以把卡片通过树形结构组织起来,用来管理创意,知识,需求,测试案例等等。 亮点: 1.轻量,操作简单,上手超级快。简单不意味着要以牺牲功能作为代价。Leangoo的核心是看板,整个页面设计很友好,可以直观的对任务一目了然。它配置性强,可灵活自定义,大量的操作都以拖拽的形式进行,并支持大量的快捷键! 2.完美支持Scrum敏捷开发和看板方法 Leangoo的设计融入了先进的敏捷管理思想,由多位业界知名敏捷管理顾问提供支持,并由专业的敏捷开发团队精心研发,完美支持Scrum敏捷开...
- 下一篇
12月29日云栖精选夜读 | SQL Server数据库漏洞评估了解一下
SQL Server Management Studio 17.4或更高版本的SSMS中提供了SQL Server漏洞侦测(VA)功能,此功能允许SQL Server扫描您的数据库以查找潜在的安全漏洞,并且可以针对SQL Server 2012或更高版本运行。 热点热议 SQL Server数据库漏洞评估了解一下 作者:依乐祝 内部干货 | 阿里CEO逍遥子:学会“用人做事”,而不是“做事用人” 作者:技术小能手发表在:阿里味儿 5分钟在阿里云Kubernetes服务上搭建jenkins环境并完成应用构建到部署的流水线作业 作者:流生 知识整理 Django 搭建单服务实现多域名访问 作者:技术小能手发表在:Python中文社区 .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现 作者:依乐祝 ELK搭建 作者:加新 SAP主数据批量导入BAPI 作者:pandamonica Django使用数据库(Mariadb/Mysql) 作者:死生之契 美文回顾 Android SMSSDK无GUI接口集成方法 作者:皮皮酱ye (十三)java...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Linux系统CentOS6、CentOS7手动修改IP地址
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS7设置SWAP分区,小内存服务器的救世主
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Hadoop3单机部署,实现最简伪集群
- MySQL8.0.19开启GTID主从同步CentOS8