Springcloud 微服务常用组件

Spring-Boot+微服务

Java-web: 开发MVC三层架构网站

SSM: 框架,简化开发流程,配置较为复杂 -> war包 在tomcat中和运行

Spring-Boot + 微服务架构 :

- jar包

- 内嵌tomcat

-  yaml 配置
-  数据库 Druid

- 核心:自动装配原理
- 分布式开发 : Dubbo (RPC) + zookeeper
- swagger:接口文档
- 任务调度:Spring-Boot
- Spring-Security : Shiro

Spring-Cloud

- 微服务
- Spring-Cloud入门
- Restful
- Eureka分布式
- 负载均衡 Nginx (Ribbon/ Feign)
- HyStrix 服务熔断机制
- Zuul 路由网关
- Spring-Cloud Config: git

Linux + JVM

Spring 解决企业级应用开发的复杂性而创建,让其

IOC + AOP + DI(依赖注入)

通过切片和模板减少样式代码

Spring-Boot

约定大于控制,几行代码开发一个http接口

框架底层的重要性>框架本身

也就是说目标就是 用框架写个项目 然后深入到框架底层,不用开发

微服务

  • 业务拆分: service ===》 变成模块
    • springMVC + Controller ==》 接口
    • 服务之间可以通过RPC 或者 Http通信
    • ORM =》 MVC =》 RPC =》 SOA(弹性计算)
    • 将数据库访问和web访问等功能都放到一个war包里面

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WqVpqEMD-1611971741319)(%E5%BE%AE%E6%9C%8D%E5%8A%A1.assets/1609841471333.png)]

Websocket, web, streaming, restfulAPIs

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F75mSWTl-1611971741323)(%E5%BE%AE%E6%9C%8D%E5%8A%A1.assets/1609841538881.png)]

透过 API 网关访问

breaker dashboard 熔断机制

  • 分布式流计算批处理 spring cloud data flow

    Eureka

Eureka 服务注册与发现

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s1FLmPCa-1611971741327)(微服务.assets/1611404887954.png)]

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cvu2r93Z-1611971741330)(微服务.assets/1611404906850.png)]

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PcsI50IZ-1611971741332)(微服务.assets/1611404950738.png)]

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zAk7OnrA-1611971741334)(微服务.assets/1611404973784.png)]

  • 注册中心 _____服务端

    • 导入依赖

      • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XRI4siVW-1611971741335)(微服务.assets/1611405078745.png)]
    • 编写配置文件

      • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ukKah1z6-1611971741336)(微服务.assets/1611405340529.png)]

        集群的话

        defaultZone: http://eureka7002.com:7002/eureka, http://eureka7003.com:7003/eureka
        
    • 编写注册启动类

      • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KtNERC2H-1611971741337)(微服务.assets/1611405418733.png)]
  • 服务提供者 (客户端)

    • 注册地址是server的defaultZone: http://localhost:7001/eureka/

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v3HaCu5a-1611971741339)(微服务.assets/1611405674814.png)]

    • 注意这里是@EnabkeEurekaClient

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5YTXbgF2-1611971741342)(微服务.assets/1611405756854.png)]

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3XD7x3Zg-1611971741343)(微服务.assets/1611406305009.png)]

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LO3hjLx1-1611971741345)(微服务.assets/1611406736464.png)]

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gzoiy1qR-1611971741346)(微服务.assets/1611406758163.png)]

    • 打印出所有相关的Restful接口[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uos5Ivxa-1611971741347)(微服务.assets/1611406575478.png)]

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cUGn33r7-1611971741348)(微服务.assets/1611406602366.png)]

  • 服务集群

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r4AIjl1s-1611971741349)(微服务.assets/1611406975923.png)]
  • CAP原理

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qM964gL6-1611971741351)(微服务.assets/1611407377831.png)]
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hSDtPYac-1611971741352)(微服务.assets/1611407395019.png)]
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FHzTsiw3-1611971741354)(微服务.assets/1611407420923.png)]
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kAHXIjKz-1611971741354)(微服务.assets/1611407499939.png)]

Ribbon

  • 负载均衡 LoadBalance

    • epoll
    • random
  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VfpH7Qij-1611971741356)(微服务.assets/1611410333611.png)]

  • LVS 服务器

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PUBAdIFM-1611971741357)(微服务.assets/1611410542738.png)]

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Mw5wAd4G-1611971741358)(微服务.assets/1611452029091.png)]

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ypifI7Me-1611971741359)(微服务.assets/1611452487651.png)]

  • @Configuration
    class RibbonConfigBean{
        @Bean
        @LoadBalance
        public RestTemplate getRestTemplate(){
    		return new RestTemplate();
    	}
    }
    
    

    Feign 负载均衡

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kMETHMad-1611971741360)(微服务.assets/1611454679909.png)]

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T3K2k4d3-1611971741360)(微服务.assets/1611454687371.png)]

Hystrix

  • 服务熔断

  • 服务监控

  • Dashboard 流监控

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gNiNH0fs-1611971741362)(微服务.assets/1611455388107.png)]

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xPqOooFr-1611971741362)(微服务.assets/1611455546164.png)]

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sBdCWbTu-1611971741363)(微服务.assets/1611455609283.png)]

  • controller [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OpwIFcel-1611971741364)(微服务.assets/1611456516922.png)]

  • Hystrix

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eltOpci8-1611971741365)(微服务.assets/1611456580772.png)]
  • 实现自定义负载均衡算法

  • import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @configuration
    public class LBRule{
        @Bean
        public IRule myRule(){
            return new RoundRobinRule();
        }
    }
    
  • 服务降级

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i8LVKWxJ-1611971741366)(微服务.assets/1611468443668.png)]

    • @FeignClient(value = "SPRINGCLOUD-PROVIDER-DEPT", class = DeptClientServiceFallbackFactory.class)
      public interface DeptClientService{
          
      }
      
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-om9V6Fw7-1611971741366)(微服务.assets/1611468652228.png)]

  • dashboard

    • @SpringBootApplication
      @EnableHystrixDashboard
      public class DeptConsumerDashboard{
          public static void main(String[] args){
              SpringApplication.run(DeptConsumerDashboard.class, args);
          }
      }
      
    • <dependency>
      	springboot-starter-hystrix
      </dependency>
      <dependency>
      	springboot-starter-hystrix-dashboard
      </dependency>
      

Zuul

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uvgwU65O-1611971741367)(微服务.assets/1611470050409.png)]

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VVJUkoBY-1611971741368)(微服务.assets/1611476802358.png)]

  • 用ip 地址 代替 localhost:${server.port}

    • hosts 里面写 127.0.0.1 www.abc.com
  • server:
    	port: 9527
    	
    spring:
    	application:
    		name: springcloud-zuul
    
    eureka:
    	client:
    		service-url:
    			defaultZone: http://eurek111.com:port/euraka
    	instance:
    		instance-id: zuul${server.port}.com
    		prefer-ip-address: true
    		
    info:
    	app.name: linln1-springcloud
    	company.name: blog.linln1.com
    
    
  • //ZuulApplication_9527.java
    
    package com.linln1.springcloud
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
        
    @SpringBootApplication
    @EnableZuulProxy
    public class ZuulApplication_9527{
        public static void main(String[] args){
            SpringApplication.run(ZuulApplication_9527.class, args);
        }
    }
    
    
  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B7YOW566-1611971741369)(微服务.assets/1611477688732.png)]

  • 公共前缀并不是必须的

    • routes中的配置是将 mydept.path 映射到 mydept.serviceId

SpringCloud config 分布式配置

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wH1Vmf7o-1611971741371)(微服务.assets/1611478465563.png)]

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i2p2KziX-1611971741371)(微服务.assets/1611478606462.png)]

  • server

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KvGGTt8s-1611971741372)(微服务.assets/1611479250874.png)]

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fux0Dbo4-1611971741372)(微服务.assets/1611479264522.png)]

  • application.yml

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fH7KyRjN-1611971741373)(微服务.assets/1611479316275.png)]
  • client

    • config-client.yml

    • ConfigClientController
      @SpringBootApplication
      @Enable
      {
          
      }
      
      
//application.yml
spring:
	application:
		name: springcloud-eureka


//bootstrap.yml 直接连接配置,不用再application.yml中再次配置
spring:
	cloud:
		config:
			name: config-eureka
			label: master
			profile: dev
			uri: http://localhost:3344

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值