SpringCloud接入EDAS——服务发现篇

  很久没有写技术文章了,最近不是写水文就是写小说。说到底,还是最近很少研究技术的缘故,已经到了江郎才尽的地步了。

  不过,LZ无意间看到自己团队的小伙伴写的一些文章,觉得还是不错的,于是便动了心思,准备把这些文章拿来,也算填补一下最近技术文章缺乏的空白。

  而这些文章,不光涉及到一些技术干货,也算是变相的给自己团队的产品做了宣传,这也算是一石俩鸟了吧。

   

引言

  

  好了,接下来咱们进入正题。可以看到,本篇文章的标题里有三个关键字,SpringCloud、EDAS以及服务发现。关于SpringCloud和EDAS咱们接下来再说,LZ想首先简单介绍一下“服务发现”这个概念。

  说到服务发现,就不得不提到很火的一个概念“微服务”,究竟什么是“微服务”?

微服务是一个新兴的软件架构,就是把一个大型的单个应用程序和服务拆分为数十个的支持微服务。一个微服务的策略可以让工作变得更为简便,它可扩展单个组件而不是整个的应用程序堆栈,从而满足服务等级协议。

  以上是从百度上抄来的解释,从字面上粗暴的理解,微服务其实就是把一个大的应用拆分成很多的小应用,而这每一个所谓的小应用,就是所谓的微服务了。

  拆分成一个个微服务以后,可以得到不小的好处,最显而易见的就是,可以节省掉很多计算资源,因为你可以针对其中某一个模块进行扩缩容,而不再是只能对整个应用。

  举个例子,就拿淘宝来说,双11大促的时候,每个模块的压力都是不同的,比如订单系统、商品搜索、评价系统等等,其中显而易见的是,订单系统这部分的压力肯定很大,但是评价系统的压力就不会那么大。

  所以,大促期间,就可以把更多的计算资源往订单系统倾斜,而如果这些还都是集中在一个应用中的话,那就无法做到这样把资源充分利用了。

  不过,微服务虽然有诸多好处,但也会同样引入一些问题。

  最典型的问题,就是所谓的“服务发现”,那究竟什么叫服务发现?

  简单地说,一个应用改成微服务以后,大家都在这个池子里,谁发布了什么服务,这个事情是需要让池子里的各个微服务知道的,否则的话,服务之间调用就不知道该找谁了。

  所以,一个服务发布了以后,怎么“发现”它,就成了微服务体系中一个重要的事情。

  那么怎么解决这个事情,思路也很简单,拿淘宝来举例,我现在要买一个娃娃,怎么才能买到呢?

  首先第一件事是,卖娃娃的商家要把自己的店开到淘宝上,然后我去淘宝上搜索“娃娃”这个关键字,然后淘宝就告诉我一堆卖娃娃的商家,我再从这些商家里选出来一家,最终就可以买到我想要的娃娃了。

  那么结合以上买娃娃的过程,放到微服务这个“市场”里,也是类似的。首先得现有一个淘宝这样的平台,一般我们叫它“服务注册中心”,然后,每一个微服务模块发布了一个服务的时候,都需要到这个“服务注册中心”去注册一下,类似于卖家去淘宝上开店的操作。

  接下来,调用者一方在调用的时候,就先去“服务注册中心”查询一下,这个就相当于去淘宝上搜索“娃娃”的操作,最终,调用者从“服务注册中心”返回的服务提供者列表里选取一个,最终调用成功。

  当然了,在调用者选取服务提供者的时候,“服务注册中心”又或者是调用者自己,也可以有一定的排序算法,比如同机房的优先调用,或者压力小的优先调用等等。

  这其实在淘宝那个例子中也同样适用,比如你搜索“娃娃”,淘宝也会给你按销量或者是按评价,对卖娃娃的商家进行综合排序,以便给你筛选出最适合你的娃娃。

  

SpringCloud的服务发现

  

  好了,LZ先简单介绍了一下微服务和服务发现的概念,那么接下来,就来谈谈SpringCloud吧。

  SpringCloud是什么玩意呢?

Spring Cloud provides tools for developers to quickly build some of the common patterns in distributed systems.

  上面这一段英文,是SpringCloud官网的解释,翻译过来的意思就是SpringCloud提供了一堆工具给开发者,让开发者可以很快的,构建一套通用模式的分布式系统。

  而这些SpringCloud提供的工具中,其中有一个,就是“服务发现”。

  在SpringCloud的支持体系中,有Eureka、Consul、Zookeeper等几种服务发现的支持,但是目前使用最广的,无疑就是Eureka了。接下来咱们就通过一个demo,来看看Eureka怎么使用的。

 

1. 启动一个服务注册中心(相当于上面例子中的淘宝网站)

 

  创建一个基础的 Spring Cloud 工程,命名为 eureka-server,并在 pom.xml 中引入需要的依赖内容:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsxdyj.html