SpringCloud基础教程(一)-微服务与SpringCloud

 我的博客:兰陵笑笑生,欢迎浏览博客!

 近年来,随着互联网公司自身的业务体系越来越大,系统复杂度越来越高,导致我们不得不将服务进行拆分,微服务的概念也是迅速在互联网发酵。我们也迫切的需要一套框架、一个生态系统能够健全、稳定的为我们解决问题。本章就简单的介绍一下微服务的概念,以及Spring Cloud的生态组件。

一、微服务架构简介

 微服务架构风格是将单体应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中,服务之间通过轻量级的通讯机制(通常是HTTP资源api).。每一个服务是围绕这个业务能力构建,并且可以独立的部署、可独立扩展。不同的服务可以使用不同的语言来编写,也可以使用不同的数据存储。总结如下:

  • 服务功能单一

  • 可独立部署、独立扩展

  • 可跨语言编程

  • 服务间良好的通信机制

 在https://spring.io/ 官方网站介绍Spring Cloud时,以图的方式展现了微服的架构图:图中包含了网关,各个微服务单元,服务注册,服务配置等

file

二、SpingCloud 简介

 在微服务的发展过程中,随着分布式水平的提高,系统会变得越来越复杂,系统发生的错误率随着系统的复杂性呈指数型增长、因此微服务也出现了反对的声音,认为微服务增加了系统的维护、部署难度、导致一些功能模块和代码很难反复的使用。有没有一种框架可以尽可能的解决上述的问题呢。有,就是Spring Cloud。

这里就介绍一下SpringCloud中微服务常用的功能

2.1 注册与发现

 服务的发现是微服务架构中很重要的一个组件,在微服务中,系统之间的依赖非常的频繁,服务调用方A服务调用B服务、C服务等多个服务,这些被调用方为了保证自身的高可用、通常都是以集群的模式部署。如果我们将被调用方的这些信息如果写在了A服务中、这样的配置是会很复杂的,同时如果我们动态的调整服务提供方,这样是不利于服务的管理的。因此我们迫切需要一种服务发现的机制。所有的服务启动时就向注册中心提交自身的信息。比如URL地址、PORT端口等信息。调用方只需要从注册中心请求指定的服务即可、目前的落地的技术有Eureka、Consul、Zookeeper、 Nacos 等 。Eureka是Netflix开源的一款产品、是SpringCloud生态的的重要的一个组件之一。zookeeper是Apache的分布式应用程序协调服务,也是一款经典的 服务注册中心产品、经常是和Dubbo配合使用。 Consul 是 HashiCorp 公司推出的开源产品, 与Eureka相比,保证了强一致性却牺牲了可用性。Nacos 是alibba 2018年开源的、基于了阿里巴巴大规模的生产经验,也是给了用户一个新的选择。关于这些后期会有详细的文章介绍,这里只做一个全面的介绍。

2.2 配置管理

 对于传统的单体应用,一个配置文件就可以解决配置问题,但是在微服务中,多个机器部署的时候,修改配置文件是一个相当繁琐的问题。为此、这个时候就需要引入一个组件。SpringCloud提供了这样的组件:Spring Cloud Config.当然国内大的互联网公司都有自己的配置中心、比如百度的DisConf、淘宝的Diamond等等。当然由于各方面的原因,这些产品可能存在一些其他问题。而Spring Cloud Conf是能够和Spring无缝集成。对于大多数的中小企业来说,这样的配置也是够的。

2.3 服务调用方式

 在微服架构中,少不了的就是服务间的调用,调用的方式Spring Cloud采用的是基于HTTP的REST方式。Dubbo采用的事RPC方式。在面临微服务基础框架选型时,Spring Cloud和Dubbo只能二选一。这也是大家总是将二者做对比的原因。Dubbo的定位是一款RPC框架,而Spring Cloud的目标是提供微服一站式解决方案。所以Dubbo和Spring Cloud并不是完全的竞争关系。

2.4 负载均衡

 LB 即负载均衡,也是微服务或分布式集群中常用的一种应用。简单来讲就是将用户的请求平摊的分配到多个服务上,从而达到高可用的目的。常用的负载均衡有软件Nginx,LVS,硬件F5等。在Sping Coud生态中,Sping Coud Netflix Ribbon 是基于Netflix Ribbon实现的一套客户端负载均衡的工具。负载均衡的算法有很多,比如轮询、随机、权重等等。

2.5 服务熔断

 在微服务架构中,是存在着很多的服务的,而且服务之间的调用可能跨网络,因为网络的不可靠性等原因出现调用故障和延迟,如果此时调用方的请求不断的增加,长时间的等待会形成调用方占用很多的资源,甚至造成系统崩溃和瘫痪,即所谓的"雪崩效应"。为了解决这样的问题,需要对故障和延迟进行隔离和管理,便出现了断路器。它的作用就是在发生无法访问、超时、异常等问题时,会通过服务降级的方式,熔断该节点的调用,快速返回“错误”的信息、可处理的备选响应,从而保证故障的蔓延等问题。Hystrix提供了熔断模式和隔离模式用来解决雪崩效应,Hystrix是在服务访问失败时降低阻塞的影响范围,避免整个服务被拖垮。

2.6 服务路由与网关

 在微服务架构模式下,后端服务的实例一般是动态的,对应客户端来说很难动态的发现改动的服务实例地址,为此,通常会引入网关API Gateway。 从而简化内部服务的相互调用的复杂度。在Spring Cloud生态中Zull就是一个落地的技术。Zull是Netfix开源的一个基于JVM的路由和服务器负载均衡器,其作用就是服务转发。当然也是可以作为资源统一访问入口。同时。也可以在网关做一些权限的校验。

2.7 调用链路追踪

 在微服务架构的生产实践中,经常会遇到这样的案例:客户反馈问题,开发、应急和运维人员从入口服务A开始查起,确定服务A没有问题,然后将问题传递到B服务,依次查询下去,这样的排查多了很多的不必要,基于调用链的服务治理系统可以解决以上的问题。Spring Cloud Sleuth就是Sping Cloud生态中实现调用链追踪的一个子项目,可以结合Zipkin很好的事项故障快速定位问题。

三 、总结

file

 在微服务架构的实践过程中,Spring Cloud 以其独有的生态迅速的扩张,覆盖了整个互联网公司。当然Spring Cloud中的组件不仅仅包含了刚才介绍的,还包括了安全、任务、消息总线、批处理等各种组件。如上图。

 本章简单介绍了微服务的架构以及Spring Cloud的生态,在之后的章节中,我将详细的介绍各个功能的具体实现。

 以上就是本期的分享,你还可以关注本博客的#Spring Cloud基础教程系列!#

本文由博客一文多发平台 OpenWrite 发布!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,179评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,229评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,032评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,533评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,531评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,539评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,916评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,813评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,568评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,654评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,354评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,937评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,918评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,152评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,852评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,378评论 2 342

推荐阅读更多精彩内容

  • 前言 现在研发的项目启动今已近一年之久,期间从项目属性、人员规模、系统定位等方面都发生了很大的变化,而且是越变越好...
    孙振强阅读 12,276评论 1 58
  • 微服务架构模式的核心在于如何识别服务的边界,设计出合理的微服务。但如果要将微服务架构运用到生产项目上,并且能够发挥...
    java菜阅读 2,938评论 0 6
  • Spring Cloud 是一系列框架的有序集合。它利用 Spring Boot 的开发便利性巧妙地简化了分布式系...
    Mr_Elliot阅读 1,720评论 1 15
  • 2019年3月11日 星期一 晴 周一,又到了升旗的日子,早起最重要的就是先去带上红领巾!每周一大早老...
    00e766263c1b阅读 79评论 0 0
  • 梦里面看到一个长头发白衣背影的女生,坐在一口锅面前,她手里拿着个大漏勺,一直往锅里捞着东西 走过去一看,锅里煮的都...
    啊飘梦境之旅阅读 209评论 0 1