spring cloud之Eureka--服务治理

最近一直在看spring的一些框架, 前面发布了一些关于springboot的文章, 然而学习是不能止步的. 学习多了才发现学习还是蛮有意思的.后面一段时间会持续更新一些关于springcloud的文章;

下面是我github的一个demo仅供参考,后续我会将spring cloud的内容继续完善;
spring_cloud_demo

1.什么是Eureka

Eureka是Netflix开发的服务发现框架, 本身是一个基于REST的服务;(这里我们在请求时候基本运用的是RESTful风格的URL, 后面会说道)
Eureka包含两个组件:Eureka Server和Eureka Client。
Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。
在应用启动后,将会向Eureka Server发送心跳,默认周期为30秒,如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,Eureka Server将会从服务注册表中把这个服务节点移除(默认90秒)。
Eureka Server之间通过复制的方式完成数据的同步,Eureka还提供了客户端缓存机制,即使所有的Eureka Server都挂掉,客户端依然可以利用缓存中的信息消费其他服务的API。综上,Eureka通过心跳检查、客户端缓存等机制,确保了系统的高可用性、灵活性和可伸缩性。

Eureka

如图有三个模块,
1.服务发现组件: 这个就是Eureka service, 消费者和服务者都要在该服务器上注册,只有在这个服务上注册的才可以相互进行数据交流
2:服务消费者: 调用方, 例如查看订单下的所有商品, 现在订单系统是一个服务器, 商品系统是一个服务器; 我只能拿到订单号, 找到订单下的商品的id, 为了得到商品信息, 只有拿着这些商品id去商品服务上去找商品.
3.服务提供者: 被调用方, 2中说道的商品服务,为订单系统调用提供数据.

2.spring cloud

当你学习过spring springMVC后你会发现, spring后面出的框架都是在这些基础上进行叠加, 对其他框架进行整合, 去其糟粕,取其精华;
spring cloud, 基于spring boot之上进行开发, cloud将许多优秀的框架进行对spring的兼容, 并二次封装,让使用者更加方面的调取服务;spring boot是spring cloud的基础; 一会boot, 一会cloud 是不是很乱; 如果还不会使用spring boot的请左转 手把手教你springboot快速整合mybatis;

3.创建一个Eureka服务端

废话不多说了,下面进入正题;

3.1添加依赖

pom.xml

<!-- 这里可以用IDEA进行快速创建spring boot项目 -->
<parent>
      <!--spring boot 基础依赖-->
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.1.RELEASE</version>
        <relativePath/> 
    </parent>
<!-- 使用dependencyManagement进行版本管理 
    spring cloud里面整合了大量的框架, 使用这个对里面的依赖进行统一管理
-->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Camden.SR6</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
<!-- 引入eureka server依赖 -->
    <dependencies>
         <!-- 引入eureka server依赖 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
        </dependency>
    </dependencies>

3.2添加注解

依赖我们加入后, 需要在spring boot的启动类中添加一个注解

package cn.cooplan.eurekaservice;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@EnableEurekaServer   //告诉spring boot启动Eureka的服务端
@SpringBootApplication
public class EurekaServiceApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaServiceApplication.class, args);
    }
}

3.3编写配置文件

eureka:
  client:
  
    register-with-eureka: false #false 不将本服务注册到eureka;(该项目为Eureka的服务端,只提供容器环境, 不进行调用)
   
    fetch-registry: false  #false 不从Eureka拉取资源
    service-url:
  
      defaultZone: http://192.168.0.101:8003/eureka/  #defaultZone在编写yml时候没有提示, 注意的是一定要驼峰命名,不然会找不到Eureka服务地址
  instance:
  
    prefer-ip-address: true  #以IP地址注册到服务中心,相互注册使用IP地址

server:
  port: 8003 #修改tomcat默认端口号, 因为在一台电脑进行演示, 避免端口冲突

3.4启动Eureka服务

启动spring boot就可以了, 启动spring boot的启动类;
浏览器访问:http://192.168.0.101:8003
当看到下面的页面, 说明你的Eureka服务启动成功

Eureka.jpg

到着我们已经做了三分之一的工作,~ 下面是对消费者和生产者进行配置;

4.配置生产者和消费者

这里我们以订单系统为消费者, 商品系统为生产者;
创建order和goods两个spring boot应用, 添加spring cloud依赖, 添加依赖与3.创建一个Eureka服务端步骤一样;

4.1添加启动类注解, 编写yml文件

Eureka的服务端与客户端(生产者, 消费者)差异在启动类加的注解不一样, yml的配置参数不同;
下面举例一个order为例, 两者配置方法相同

4.2添加启动类注解

package cn.cooplan.order;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@EnableEurekaClient //开启Eureka客户端服务, 代表该服务是一个客户端
@SpringBootApplication
public class OrderApplication {

    public static void main(String[] args) {
        SpringApplication.run(OrderApplication.class, args);
    }

}

4.3编写yml文件

eureka:
  client:
    fetch-registry: true    #true将服务添加到Eureka服务中
    register-with-eureka: true  #true允许从Eureka服务中获取数据, 进行交互
    service-url:
      #注意: defaultZone 一定要驼峰命名
      defaultZone: http://192.168.0.101:8003/eureka/  #指向你的Eureka服务
server:
  port: 8002

4.4启动Eureka客户端

同Eureka service一样启动spring boot的启动类; 注意的是, 先启动Eureka service服务, 不然客户端会找不到service报错
浏览器访问:http://192.168.0.101:8003
当看到下面的页面, 说明你的客户端已经注册到Eureka服务中

Eureka.jpg

5.总结

这个时候我们的Eueka服务已经完成,
我们在使用spring cloud的时候, 实际上就是在写一个spring boot的项目; cloud只是将我们需要的分布式框架与spring整合, 并且更方便的调用;
以上内容是我在学习中自己摸索的, 如果有问题, 请留言;

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

推荐阅读更多精彩内容