springboot2.0新版springcloud微服务实战:Eureka+Zuul+Feign/Ribbon+Hystrix

    springboot2.0新版springcloud微服务实战

    • 商品编号:
      #73428334_127
      • 原价:
        免费
      • 会员价:
        免费
    • 版本:
      • V1.0.0
    • 数量:
      库存(不限)

    购物车中已存在此商品,请在购物车中操作单击跳转购物车

    • 博客地址:https://blog.csdn.net/yp090416/article/details/81414105
    • 开源协议:BSD协议
    • 源码架构:B/S
    • 数据库:无
    • 开发语言:Java
    • 版本工具管理:GitHub
    • 编码格式:UTF-8
    • 开发者:码农笔录
    • 开发环境:Idea

            本篇文章是springboot2.x升级后的升级springcloud专贴,因为之前版本更新已经好久了,好多人评论可不可以出个新版本,大家一定要注意,这是springboot2.x版本的,springboot1.x的请参考 点击查看文章,基本组件都不变就是升级jar包版本,主要就是hystrix-dashboard使用有点变化。还有一点要注意的是sc默认使用的是eureka1.9.x版本,大家一定要主要,不要自己手动改为2.x版本,因为2.x版本还没有正式发布,而且停止开发了,官方还在积极的维护1.x版本(并不是网传的闭源)。 

            相信现在已经有很多小伙伴已经或者准备使用springcloud微服务了,接下来为大家搭建一个微服务框架,后期可以自己进行扩展。会提供一个小案例: 服务提供者和服务消费者 ,消费者会调用提供者的服务,新建的项目都是用springboot,附源码下载,推荐使用coding地址下载,因为可以切换分支,后期可以及时更新。

            如果有问题请在下边评论,或者200909980加群交流。或者关注文章结尾微信公众号,私信后台 

     Eureka/Consul/Zookeeper:服务发现 (根据情况选择一个,eureka已经宣布闭源) 

    Hystrix:断路器

     Zuul:智能路由 

    Ribbon/Feign:客户端负载均衡 (Feign用的更多) 

    Turbine&hystrix-dashboard:集群监控 

    Springcloud-config:远程获取配置文件


        接下来,我们开始搭建项目,首先我们到spring为我们提供的一个网站快速搭建springboot项目,点击访问,我这里用的是gradle,如果各位客官喜欢用maven,好吧你可以到http://mvnrepository.com/查看对应的依赖,点我访问。  


        一、搭建eureka-server服务sc-eureka-server

     使用 spring-cloud-consul 作为服务发现 请参考 点击查看使用springcloud consul 作为服务发现

     eureka-server作为服务发现的核心,第一个搭建,后面的服务都要注册到eureka-server上,意思是告诉eureka-server自己的服务地址是啥。当然还可以用zookeeper或者springconsul。

     1.修改build.gradle文件 如果是maven项目请对应的修改pom.xml 

    //加入阿里的私服仓库地址
    maven { url "http://maven.aliyun.com/nexus/content/groups/public/" }
    //加入依赖	
    compile('org.springframework.cloud:spring-cloud-starter-netflix-eureka-server')
    //加入security,是因为访问eureka-server需要用户名和密码访问,为了安全
    compile('org.springframework.boot:spring-boot-starter-security')

    还有几点需要修改的,大家对应图片看看,就是springboot打包的时候会提示找不到主类。 

     

    • 2.修改 application.yml,建议用yml。
    • server:
        port: 8761
      eureka:
        datacenter: trmap
        environment: product
        server:
            # 关闭自我保护
            enable-self-preservation: false
            # 清理服务器
            eviction-interval-timer-in-ms: 5000
        client:
          healthcheck:
            enabled: true
          service-url:
            defaultZone: http://root:booszy@localhost:8761/eureka/
          register-with-eureka: false
          fetch-registry: false
      spring:
        security:
          basic:
            enabled: true
          user:
            name: root
            password: booszy
      • 3.修改程序的主类,建议修改类名,要加如eureka的 @EnableEurekaServer 注解,然后运行main方法。
    @EnableEurekaServer
    @SpringBootApplication
    public class Sb2scEurekaApplication {
    	public static void main(String[] args) {
    		SpringApplication.run(Sb2scEurekaApplication.class, args);
    	}
    }


    http://localhost:8761/ 这个是eureka-server的页面地址,密码在yml配置文件中,到这里,说明eureka-server搭建好了,简单吧,这一步一定要成功,否则后面的就不能继续进行下去了,后边基本类似。 

    二、搭建config-server服务sc-config-server

    springcloud-config-server是用来将远程git仓库的配置文件动态拉下来,这样配置文件就可以动态的维护了。当然也可以选择本地仓库。

    新建一个springboot项目,修改maven私服地址,并加入一下依赖。

    • 1.修改build.gradle文件
    • compile('org.springframework.cloud:spring-cloud-config-server')
      compile('org.springframework.cloud:spring-cloud-starter-netflix-eureka-client')
      //连接config-server也需要用户名和密码
      compile('org.springframework.boot:spring-boot-starter-security')
      compile('org.springframework.boot:spring-boot-starter-actuator')
      • 2.修改application.yml文件
    server:
      port: 8800
    spring:
      security:
        basic:
          enabled: true
        user:
          name: root
          password: booszy
      application:
        name: sc-config-server
      cloud:
        config:
          server:
            git:
              uri: https://git.coding.net/yirenyishi/springcloud-config-profile
              searchPaths: '{application}'
    eureka:
      client:
        service-url:
          defaultZone: http://root:booszy@localhost:8761/eureka/
      instance:
        prefer-ip-address: true
        instance-id: ${spring.application.name}:${spring.application.instance_id:${server.port}}
        appname: sc-config-server
    • 3.修改启动类

    修改启动类,要加入这三个注解,因为要注册到eureka-server上,所以需要@EnableDiscoveryClient这个注解

    @EnableConfigServer
    @EnableDiscoveryClient
    @SpringBootApplication
    public class Sb2scConfigApplication {
    	public static void main(String[] args) {
    		SpringApplication.run(Sb2scConfigApplication.class, args);
    	}
    }

    然后运行启动springboot项目,等启动成功后访问eureka的页面,会发现sc-config-server已经注册到上面了,如果启动报错,请检查错误信息。 


    三、搭建服务提供者服务sc-provider

    编写一个服务提供者,为下边的消费者提供服务,用到了spring-webflux(spring新出的非阻塞式框架)不是springmvc,当然你们公司用什么你还是继续用什么。 

    • 注意 : 这里除了application.xml,还需要一个bootstrap.yml, 因为bootstrap.yml得加载顺序是在application.xml前边,服务注册和config配置必须放到bootstrap.yml。
      1. 修改build.gradle文件
    compile('org.springframework.cloud:spring-cloud-starter-netflix-eureka-client')
    compile('org.springframework.cloud:spring-cloud-starter-config')
    compile('org.springframework.boot:spring-boot-starter-webflux')
    compile('org.springframework.boot:spring-boot-starter-actuator')
    • 2.编写配置文件bootstrap.yml

    ** 注意 : 这里除了application.xml,还需要一个bootstrap.yml*

    application.xml我是放到远程仓库地址的,大家可以直接到我的远程仓库,根据项目名(sc-provider-config)查询。配置文件的仓库地址:点击访问

    eureka:
      client:
        service-url:
          defaultZone: http://root:booszy@localhost:8761/eureka/
      instance:
        prefer-ip-address: true
        instance-id: ${spring.application.name}:${spring.application.instance_id:${server.port}}
        appname: sc-provider
    
    spring:
      application:
        name: sc-provider
      cloud:
        config:
          discovery:
            enabled: true
            service-id: sc-config-server
          fail-fast: true
          username: root
          password: booszy
          profile: csdn
    • 3.编写代码   编写主类
    @EnableDiscoveryClient
    @SpringBootApplication
    public class Sb2scProviderApplication {
    	public static void main(String[] args) {
    		SpringApplication.run(Sb2scProviderApplication.class, args);
    	}
    }

    新建IndexController进行测试,这里只是为了测试,案例代码使用的是webflux,如果想使用springmvc,修改jar包依赖即可。  

    @RestController
    @RequestMapping("test")
    public class IndexController {
    	//返回一个实体
        @GetMapping("{msg}")
        public Mono<String> sayHelloWorld(@PathVariable("msg") String msg) {
            System.out.println("come on " + msg);
            return Mono.just("sc-provider receive : " +msg);
        }
    	//返回一个列表
        @GetMapping("list")
        public Flux<Integer> list() {
            List<Integer> list = new ArrayList<>();
            list.add(8);
            list.add(22);
            list.add(75);
            list.add(93);
            Flux<Integer> userFlux = Flux.fromIterable(list);
            return userFlux;
        }
    }

    运行springboot项目,去eureka-server查看,有没有注册上。  


    我们的sc-provider已经注册到eureka上了,访问接口,成功。  


    权利声明:本站所有商品信息、客户评价等信息是初心商城重要的数据资源,未经许可,禁止非法转载使用。 注:本站商品信息均来自初心商城,其真实性、准确性和合法性由初心商城负责。

                    初心源说明:初心商城主要为程序员提供开发基础的代码源以及成熟项目,网站中所有的商品有提供收费版本的, 也有提供免费版本的,按照大家各自不同的需求进行购买。实实在在的让程序员只用专注于自己的业务实现你的小梦想, 如果您对我们的成果表示认同并且觉得对你有所帮助我们愿意接受来自各方面的支持^_^。

                    支持:用手机扫描二维码支付

                    支付宝支持我们 微信支持我们

                    您的支持将被用于:
                    1、持续深入的上传更多更好的源代码
                    2、建立更加完善的技术社区
                    3、完善现在系统出现各种问题
                    4、购买域名和租赁服务器

                    1、交易规则

                    2、发货方式

                    1、自动:在上方保障服务中标有自动发货的商品,拍下后,将会自动收到来自卖家的商品获取(下载)链接

                    2、手动:在上方保障服务中标有手动发货的商品,拍下后,卖家会收到邮件,也可通过QQ或订单中的电话联系对方。

                    3、退款说明

                    1、描述:源码描述(含标题)与实际源码不一致的(例:描述PHP实际为ASP、描述的功能实际缺少、版本不符等)

                    2、演示:有演示站时,与实际源码小于95%一致的(但描述中有"不保证完全一样、有变化的可能性"类似显著声明的除外)

                    3、发货:手动发货源码,在卖家未发货前,已申请退款的

                    4、服务:卖家不提供安装服务或需额外收费的(但描述中有显著声明的除外)

                    5、其它:如质量方面的硬性常规问题等

                    备注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。交易中的商品,卖家无法对描述进行修改!

                    4、注意事项

                    1、客户买完之后未确认收货,将不会收到下载地址和下载码,确认收货之后才能收到下载地址和下载码。

                    2、在未拍下前,双方在QQ上所商定的内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准);

                    3、在商品同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外);

                    4、在没有"无任何正当退款依据"的前提下,写有"一旦售出,概不支持退款"等类似的声明,视为无效声明;

                    5、虽然交易产生纠纷的几率很小,但请尽量保留如聊天记录这样的重要信息,以防产生纠纷时出现问题不明确的情况。

                    5、交易声明

                    1、本站作为直卖平台,依据交易合同(商品描述、交易前商定的内容)来保障交易的安全及买卖双方的权益;

                    2、非平台线上交易的商品,出现任何后果均与本站无关;无论卖家以何理由要求线下交易的,请联系管理举报。

                    初心Logo

                    初心商城| 初心系列| 初心博客| 版本历史| 通知公告| 系统反馈

                    © 2016-2019 上海吾永网络科技有限公司 保留所有权利 沪ICP备19028491号
                    违法和不良信息举报电话:186-2950-9347,本网站所列数据,除特殊说明,所有数据均出自我工作室
                    本网站兼容所有主流浏览器,不支持手机自适应

                    返回顶部小火箭