当前位置: 首页 > news >正文

221 springCloud 学习

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

1. 概念

                                  892f9e7fda08d33e4a5d94ef17cc80ec2c8.jpg

1.1 springCloud是什么?

   springCloud是一种微服务治理框架:

52fee82e324a2f0a7f910d8a54b57261e01.jpg

1.2 springCloud优势:

    ac385911a5f85af87f4c1f459a4f44b07be.jpg

 

2.服务治理SpringCloud Eureka

 

                                       e402c5fb59d56c1f9c974019e316036deac.jpg

2.1 什么是服务治理

          在传统rpc远程调用中,服务与服务依赖关系,管理比较复杂,所以需要使用服务治理,管理服务与服务之间依赖关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册===》服务管理

2.2 服务注册中心

 

   概念: 提供服务治理功能,用来实现各个微服务实例的自动注册与发现

fe9c0bdd707ab316b082a8e12b0f82346cd.jpg

 

 

                                                     35e85296f161dc7400a271b76f84746d6ca.jpg

 2.2   服务注册

    有一个注册中心,当服务器启动的时候,会把当前自己服务器的信息 比如 服务地址通讯地址等以别名方式注册到注册中心上

 2.3  服务发现

   另一方(消费者|服务提供者),以该别名的方式去注册中心上获取到实际的服务通讯地址

2.4 搭建eureka注册中心

6191b535d2d429749e094d8db33e97da29f.jpg

9140d8f832f5bd170ff3d768e0c12fa8fe6.jpg

 

21048d19614dda76bee4e9c0117f1bc804a.jpg

1eb7df0d7b2bd9c06ee2718f199dbc04fea.jpg

搭建eureka服务器

40a3491ec521d8a05b38338f1d4eda98a5b.jpg

4f31de7be5346cf77585f953f3f4e4e5678.jpg

753d30278a371476f39971aedcc71a0c279.jpg

c6e84ed4c3bc12974464ec77746e85eafef.jpg

db6c64607664e1cd5be9d0242a1103722b5.jpg

重要:

###服务端口号
server:
  port: 8000
###eureka 基本信息配置
eureka:
  instance:
    ###注册到eurekaip地址
    hostname: 127.0.0.1
  client:
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
    ###因为自己是为注册中心,不需要自己注册自己
    register-with-eureka: false
    ###因为自己是为注册中心,不需要检索服务
    fetch-registry: false

4034d06b1205429e92f27dcafdba3800490.jpg

 

在驱动器类上添加 

@EnableEurekaServer

2af923a89d7fc2f002e65bdeaea07eb8c58.jpg

完成的效果:

9acc7ce4680f4c9538c2df88716ae602332.jpg

2.5 编写 服务提供者

5feb0b6261d4a22789a49b6706a966d409b.jpg

fe5f2436ecf801afc3b4e1989b8c3ef25b0.jpg

abe0ef804c049bea6b98a9fc03acdacb7f8.jpg

6d42b4be936a0294d09c84c90704da559b5.jpg

8db8cc7e2e889ca5d5ee42db852276ded93.jpg

d5bd20828ca88486aefd6b87ac619b45fdd.jpg

bd13618547e2cea5a14db18fc1554d61cde.jpg

删除.proties文件 使用yml(个人习惯)

###服务启动端口号
server:
  port: 8100
###服务名称(服务注册到eureka名称)
spring:
    application:
        name: app-provide
###服务注册到eureka地址
eureka:
  client:
    service-url:
           defaultZone: http://localhost:8000/eureka


###因为该应用为注册中心,不会注册自己
    register-with-eureka: true
###是否需要从eureka上获取注册信息
    fetch-registry: true

421bb8b2c47aea71fd2e8e5254feb702302.jpg

编写 服务端代码

e69bb7fdebf124c47cc08f27490ecb52b47.jpg

 

效果:

f649ad07b25f43245d6e8767beceb8c4988.jpg

2.6 服务消费

方式一:直接使用httpClient调用 (不建议 越过了注册中心  )

方式二:rest方式调用服务

2.6.1 rest方式调用服务

d939493bb228d19c2023411874ee6905c34.jpg

6829f0c8bb5d4f93ae2bfc0ed7afee1c61f.jpg

15217e2a237b7abc90e656b57c0275f0588.jpg

94f7d0376432c367887ca7bb2c7e8f33887.jpg

8fb1543c4ee8890150361c04efbb6ea1c37.jpg

 

0c13ec9ad09e9e6e5fc71fdb9dfd5ec2058.jpg

11502ca2a2062c7007e2261fd90c027654e.jpg

 

###服务启动端口号
server:
  port: 8200
###服务名称(服务注册到eureka名称)
spring:
    application:
        name: app-customer
###服务注册到eureka地址
eureka:
  client:
    service-url:
           defaultZone: http://localhost:8000/eureka


###因为该应用为注册中心,不会注册自己
    register-with-eureka: true
###是否需要从eureka上获取注册信息
    fetch-registry: true

4611a6a8baa2000bb5b4fa959f8fc11f82f.jpg

消费者类

f4914486adc4412dafbad36d29ea4f68dc2.jpg

77e7aac373999bd94c37f8b7c8ddf30669d.jpg

效果:

74d5db19172c79537dd310a654ce85b404c.jpg

2.7 代码分享

码云:

https://gitee.com/Luck_Me/ideaspring_cloudintroduction/tree/master

百度云:

链接:https://pan.baidu.com/s/128iaKCCrfxvqgZeLBBQ0_Q 
提取码:0ffs 

2.8 @LoadBalanced实现本地负载均衡

多配置几个服务提供者   @LoadBalanced会帮助我们自动实现本地负载均衡(默认轮询方式   )

效果:这里只是配置2个 其实3个及以上一模一样(测试过)

3605f57527eaeda0f554fe613360c8d9045.jpg

 

a70bf766a69f923197c4e076558038e4502.jpg

 

实现过程:

dd740d8d59c498d1f1e034baa1dd4a18508.jpg

65eb0126cfd03b450911fdbb28d2b10e3c4.jpg

2.9  eureka注册中心 集群

49b424984e21ab3cbb9093a6ce2bb16bae2.jpg

3个及以上的eureka集群效果

d581b717babf862b1b0fad3639b7c85d0c3.jpg

 实现过程:(记得每一个服务中 都要改持有对方的信息)

###服务端口号
server:
  port: 8001
###eureka 基本信息配置
eureka:
  instance:
    ###注册到eurekaip地址
    hostname: 127.0.0.1
  client:
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:8000/eureka/
    ###因为自己是为注册中心,不需要自己注册自己
    register-with-eureka: true
    ###因为自己是为注册中心,不需要检索服务
    fetch-registry: true

4dfcec880763137cbf74819f2f8eb80c7a9.jpg

 

2.10 客户端调用Eureka2.0集群环境

效果:

d497883ec6018b49196de3974078d3aac09.jpg

 

测试宕机后的效果:

9ab677356979fd2ae558cc9702a3ad4f35e.jpg

6d30d044541e79c8d3f4952003a01ea4566.jpg

实现过程:

7617f5a0e0ec713114d6ef6c621a9ab6787.jpg

 

代码(要与上面分享的进行区分  这个是用了各种集群了):

 

码云:

https://gitee.com/Luck_Me/ideaspring_cloudintroduction/tree/master

百度云:

链接:https://pan.baidu.com/s/128iaKCCrfxvqgZeLBBQ0_Q 
提取码:0ffs 

转载于:https://my.oschina.net/springMVCAndspring/blog/3043969

相关文章:

  • 2018-2019-2 网络对抗技术 20165324 Exp6:信息收集与漏洞扫描
  • 学号20175313 《数据库MySQL(课下作业,必做)》第十周
  • Oomox:定制和创建你自己的 GTK2、GTK3 主题
  • 图论
  • mysql笔记
  • 云原生的新思考,为什么容器已经无处不在了
  • Spark中利用Scala进行数据清洗(代码)
  • Flask搭建简单的get请求
  • linux 源码安装JAVA jdk
  • Spring事务管理之几种方式实现事务(转)
  • 【转】np.random.random()函数 参数用法以及numpy.random系列函数大全
  • 从零开始手写一个优化版React脚手架
  • JavaWeb学习笔记(十二)--Session案例
  • 实验:basic验证,组验证
  • 携程、阿里、京东、腾讯iOS春招面试过程以及面试题总结!
  • es6--symbol
  • ES6系列(二)变量的解构赋值
  • ES6语法详解(一)
  • java 多线程基础, 我觉得还是有必要看看的
  • Java读取Properties文件的六种方法
  • JS 面试题总结
  • leetcode386. Lexicographical Numbers
  • Object.assign方法不能实现深复制
  • Python利用正则抓取网页内容保存到本地
  • Quartz初级教程
  • React-Native - 收藏集 - 掘金
  • SpringCloud集成分布式事务LCN (一)
  • Spring核心 Bean的高级装配
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • 给初学者:JavaScript 中数组操作注意点
  • 基于遗传算法的优化问题求解
  • 目录与文件属性:编写ls
  • 区块链共识机制优缺点对比都是什么
  • 如何设计一个微型分布式架构?
  • 使用agvtool更改app version/build
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 问题之ssh中Host key verification failed的解决
  • 由插件封装引出的一丢丢思考
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • 转载:[译] 内容加速黑科技趣谈
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • puppet连载22:define用法
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • #ifdef 的技巧用法
  • #Z2294. 打印树的直径
  • $.each()与$(selector).each()
  • %check_box% in rails :coditions={:has_many , :through}
  • (4)logging(日志模块)
  • (三分钟)速览传统边缘检测算子
  • (四)汇编语言——简单程序
  • (四)库存超卖案例实战——优化redis分布式锁