springcloud使用

中文社區:http://springcloud.cn/
私人git下載地址:https://github.com/yunzhi98/springcloud.git
1,Eureka:註冊中心 github代碼地址 (github.com/yunzhi98/springcloud/microservicecloud-eureka-7001)
客戶端集羣

1.1,pom引入  <!--eureka-server服務端 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
        </dependency>
1.2 註解啓動
	@SpringBootApplication
	@EnableEurekaServer // EurekaServer服務器端啓動類,接受其它微服務註冊進來
	public class EurekaServer7001_App
	{
		public static void main(String[] args)
		{
			SpringApplication.run(EurekaServer7001_App.class, args);
		}
	}

2,Eureka 服務提供 代碼地址(github.com/yunzhi98/springcloud/microservicecloud-provider-dept-8001)

    2.1 pom,引入
    <!-- 將微服務provider側註冊進eureka -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency>

  2.2 啓動類及註解
     @SpringBootApplication
	@EnableEurekaClient //本服務啓動後會自動註冊進eureka服務中
	@EnableDiscoveryClient //服務發現
	public class DeptProvider8001_App
	{
		public static void main(String[] args)
		{
			SpringApplication.run(DeptProvider8001_App.class, args);
		}
	}
	2.3監控信息完善
	<!-- actuator監控信息完善 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        2.31主pom設定過濾監控配置,在src/main/resources下過濾$開始於結尾的配置
        在yml下info的設定.
        <build>
        <finalName>microservicecloud</finalName>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <configuration>
                    <delimiters>
                        <delimit>$</delimit>
                    </delimiters>
                </configuration>
            </plugin>
        </plugins>
    </build>

3, 客戶端集羣,及服務發現 eureka-server服務端集羣配置
(github.com/yunzhi98/springcloud/microservicecloud-eureka-7001, github.com/yunzhi98/springcloud/microservicecloud-eureka-7002, github.com/yunzhi98/springcloud/microservicecloud-eureka-7003)

3.1 yml配置記錄除本機外的其他集羣服務機器地址
7001:defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
7002:defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7003.com:7003/eureka/
7003:defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/

3.2 引用端2中yml中記錄集羣的全部機器地址
eureka: client: #客戶端註冊進eureka服務列表內
        service-url:
        defaultZone: http://eureka7001.com:7001/eureka/,
                             http://eureka7002.com:7002/eureka/,
                             http://eureka7003.com:7003/eureka/

4,客戶端負載均衡(Ribbon) ,消費端調用代碼地址(github.com/yunzhi98/springcloud/microservicecloud-consumer-dept-80)

4.1,pom配置 <!-- Ribbon相關 -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-ribbon</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-config</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
    4.2,客戶端代理指向集羣服務yml配置
   eureka client:
            register-with-eureka: false
             defaultZone:http://eureka7001.com:7001/eureka/,
             http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/  
             
    4.3,對客戶端代理RestTemplate進行Ribbon註解
        @Bean
	@LoadBalanced//Spring Cloud Ribbon是基於Netflix Ribbon實現的一套客戶端       負載均衡的工具。
	public RestTemplate getRestTemplate()
	{
		return new RestTemplate();
	}
	
	4.4,集羣訪問算法,自定義實現RandomRule_ZY.class 加入啓動applicaltionClassPath 的ben中.
	@Bean
	public IRule myRule()
	{
	  return new RetryRule();//達到的目的,用我們重新選擇的隨機算法替代默認的輪詢。
	}
	注意:
	@RibbonClient(name="MICROSERVICECLOUD-DEPT",configuration=MySelfRule.class)
	官網提示不能和主啓動類同包

5,服務端集羣配置,及服務註冊
(github.com/yunzhi98/springcloud/microservicecloud-provider-dept-8001, github.com/yunzhi98/springcloud/microservicecloud-provider-dept-8002, github.com/yunzhi98/springcloud/microservicecloud-provider-dept-8003)

5.1 yml配置
eureka:client: #客戶端註冊進eureka服務列表
 http://eureka7001.com:7001/eureka/,
 http://eureka7002.com:7002/eureka/,
 http://eureka7003.com:7003/eureka/
instance:
    instance-id: microservicecloud-dept8002   #自定義服務名稱信息
   prefer-ip-address: true     #訪問路徑可以顯示IP地址
5.2啓動類配置
@SpringBootApplication
@EnableEurekaClient //本服務啓動後會自動註冊進eureka服務中
@EnableDiscoveryClient //服務發現
public class DeptProvider8002_App
{
	public static void main(String[] args)
	{
		SpringApplication.run(DeptProvider8002_App.class, args);
	}
}

6,客戶端負載均衡(Feign) ,Feign面向webService接口消費端調用代碼地址(github.com/yunzhi98/springcloud/microservicecloud-consumer-dept-feign)

6.1,依賴導入
      <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-feign</artifactId>
        </dependency>
6.2,只需要對定義接口和微服務名稱進行註解綁定
	    @FeignClient(value = "MICROSERVICECLOUD-DEPT",
	    fallbackFactory=DeptClientServiceFallbackFactory.class)
           public interface DeptClientService{
               @RequestMapping(value = "/dept/get/{id}", method = RequestMethod.GET)
                public Dept get(@PathVariable("id") long id);
           }
 6.3,Controlle注入接口註解調用
        	@Autowired
              private DeptClientService service;

7,Hystrix(斷路器/熔斷/降級 github.com/yunzhi98/springcloud/microservicecloud-provider-dept-hystrix-8001)

7.1,maven依賴引用
 <!-- hystrix -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-hystrix</artifactId>
    </dependency>
 7.2,註解主啓動程序服務器
   	@SpringBootApplication
	@EnableEurekaClient //本服務啓動後會自動註冊進eureka服務中
	@EnableDiscoveryClient //服務發現
	@EnableCircuitBreaker//對hystrixR熔斷機制的支持
	public class DeptProvider8001_Hystrix_App
	{
		public static void main(String[] args)
		{
			SpringApplication.run(DeptProvider8001_Hystrix_App.class, args);
		}
	}
7.3,在Controller方法添加@HystrixCommand(fallbackMethod = "processHystrix_Get")註解,實現熔斷返回.
7.4,利用spring的面向切面解耦,返回服務降級的公用提示.
@Component // 不要忘記添加
public class DeptClientServiceFallbackFactory implements FallbackFactory<DeptClientService>
{
}
7.5,對於服務端集羣而言,某個服務因資源不夠而關閉,但爲了防止客戶端調用的積壓,而降級處理,返回服務說明.
    而對於可預判的異常直接熔斷,避免超時損耗服務資源.

8,準實時調用監控(Hystrix Dshboard github.com/yunzhi98/springcloud/microservicecloud-consumer-hystrix-dashboard)

8.1,maven依賴引用
<!-- hystrix和 hystrix-dashboard相關 -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-hystrix</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-hystrix-dashboard</artifactId>
    </dependency>
8.2,主程序註解關聯
@SpringBootApplication
@EnableHystrixDashboard
public class DeptConsumer_DashBoard_App
{
	public static void main(String[] args)
	{
		SpringApplication.run(DeptConsumer_DashBoard_App.class, args);
	}
}
8.3,啓動Hystrix Dshboard 進入豪豬頁面,直接輸入服務地址,檢索該服務的調用情況.

9,zuul路由網關的過濾.

9.1maven依賴
	<dependency> 
	    <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zuul</artifactId>
        </dependency>
9.2,主啓動類註解關聯( github.com/yunzhi98/springcloud/microservicecloud-zuul-gateway-9527)
   @SpringBootApplication
@EnableZuulProxy
public class Zuul_9527_StartSpringCloudApp
{
	public static void main(String[] args)
	{
		SpringApplication.run(Zuul_9527_StartSpringCloudApp.class, args);
	}
}
9.3路由yml過濾配置
zuul: 
       prefix: /atguigu
    ignored-services: "*"
 routes: 
    mydept.serviceId: microservicecloud-dept
    mydept.path: /mydept/**

10,SpringCloud分佈式配置中心config使用.( github.com/yunzhi98/springcloud/microservicecloud-config)

10.1,關聯git倉庫配置congif文件信息
spring:
 application:
 name:  microservicecloud-config
cloud:
    config:
     server:
     git:
       uri: [email protected]:yunzhi98/microservicecloud-config.git #GitHub上面的git倉庫名字
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章