SpringCloudAlibaba分布式組件詳解
分布式組件-SpringCloud Alibaba

簡介

SpringCloudAlibaba的優(yōu)勢: 阿里使用過的組件經(jīng)歷了考驗,性能強悍,設(shè)計合理,現(xiàn)在開源出來大家用成套的產(chǎn)品搭配完善的可視化界面給開發(fā)運維帶來了極大的便利,搭建簡單,學習曲線低。 SpringCloud Alibaba-Nacos:注冊中心(服務發(fā)現(xiàn)/注冊) SpringCloud Alibaba-Nacos:配置中心(動態(tài)配置管理) SpringCloud-Ribbon:負載均衡 SpringCloud-Feign:聲明式HTTP客戶端(調(diào)用遠程服務) SpringCloud Alibaba-Sentinel:服務容錯(限流、降級、熔斷) SpringCloud-Gateway:API網(wǎng)關(guān) SpringCloud-Sleuth:調(diào)用鏈監(jiān)控 SpringCloud Alibaba-Seata:原 Fescar,即分布式事務
gulimall-common的pom.xml
<dependencyManagement>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Nacos注冊中心
第一步:gulimall-common的pom.xml加入依賴 <!-- 服務注冊/發(fā)現(xiàn)--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
第二步:下載nacos 地址:github.com/alibaba/nacos/releases 版本:1.1.3
第三步:修改你要將那個服務注冊上去的application.yml
spring:
application:
name: gulimall-coupon
cloud:
nacos:
discovery:
server-addr: localhost:8848
第四步:在啟動類上標注注解 @EnableDiscoveryClient
第五步:訪問nacos 路徑:127.0.0.1:8848/nacos/#/login

OpenFeign遠程調(diào)用
需求:gulimall-member會員服務調(diào)用gulimall-coupon優(yōu)惠券服務
1.在gulimall-common pom.xml文件加入 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
2.//gulimall-coupon
@RestController
@RequestMapping("coupon/coupon")
public class CouponController {
@RequestMapping("/member/list")
public R membercoupons(){
CouponEntity couponEntity = new CouponEntity();
couponEntity.setCouponName("滿100減10");
return R.ok().put("coupon",Arrays.asList(couponEntity));
}
}
3.//gulimall-member
@FeignClient("gulimall-coupon")
public interface CouponFeignService {
@RequestMapping("/coupon/coupon/member/list")
public R membercoupons();
}
4.//開啟遠程調(diào)用功能:EnableFeignClients
@EnableRedisHttpSession
@EnableFeignClients(basePackages = "com.xunqi.gulimall.member.feign")
@EnableDiscoveryClient
@SpringBootApplication
public class GulimallMemberApplication {
public static void main(String[] args) {
SpringApplication.run(GulimallMemberApplication.class, args);
}
}
5.調(diào)用
@RestController
@RequestMapping("member/member")
public class MemberController {
@Autowired
private MemberService memberService;
@Autowired
CouponFeignService couponFeignService;
@RequestMapping("/coupons")
public R test(){
MemberEntity memberEntity = new MemberEntity();
memberEntity.setNickname("張三");
R membercoupons = couponFeignService.membercoupons();
return R.ok().put("member",memberEntity).put("coupons",membercoupons.get("coupons"));
}
}

配置中心-簡單實例
1.在gulimall-common pom.xml文件加入 <!-- 配置中心來做配置管理--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>
2.在gulimall-coupon創(chuàng)建bootstrap.yml
spring:
application:
name: gulimall-coupon
cloud:
nacos:
config:
server-addr: localhost:8848
3.在application.properties
//此方法有了注冊中心后,不再使用 application.properties coupon.user.name=zhangsan coupon.user.age=18




配置中心-命名空間
了解幾個概念 1.命名空間:配置隔離;默認是public 2.配置集:所有配置的集合 3.配置集id:類似于文件名 4.配置分組

剛剛,我們創(chuàng)建的gulimall-coupon.properties是在public的命名空間,里面的內(nèi)容是name=zhangsan,age=24
現(xiàn)在,我們在prop下也創(chuàng)建一個gulimall-coupon.properties



以上,演示完了命名空間,里面命名空間做環(huán)境的隔離;其實是通過dev、prop、public(開發(fā)、生成、默認)等角度來命名
現(xiàn)在,我們要給每一個微服務創(chuàng)建自己的命名空間。

配置分組的概念


最終版使用:每一個微服務創(chuàng)建自己的服務命名空間;使用配置分組來確定是dev、prop、test。


配置中心-加載多配置集
隨著我們服務越來越多,一個yml文件里面需要配置mysql、redis、server.port等等的配置?,F(xiàn)在,我們要將他們抽取出來。

拆分后


Gateway網(wǎng)關(guān)核心
Gateway創(chuàng)建測試網(wǎng)關(guān)
1.創(chuàng)建網(wǎng)關(guān)服務gulimall-gateway
2.application.properties spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 spring.application.name=gulimall-gateway server.port=88
3.bootstrap.yml
spring:
application:
name: gulimall-coupon
cloud:
nacos:
discovery:
server-addr: localhost:8848
config:
server-addr: localhost:8848
# file-extension: yml
namespace: ea65d118-135f-4928-bbc6-c8ec85b3fd78
4.application.yml
spring:
cloud:
sentinel:
transport:
#配置sentinel dashboard地址
dashboard: localhost:8080
gateway:
routes:
# - id: test_route
# uri: https://www.baidu.com
# predicates:
# - Query=uri,baidu
#
# - id: qq_route
# uri: https://www.qq.com
# predicates:
# - Query=uri,qq
總結(jié)
本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
MyBatis中執(zhí)行相關(guān)SQL語句的方法
本文主要介紹了MyBatis中執(zhí)行相關(guān)SQL語句的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-08-08
Java的分支結(jié)構(gòu)與循環(huán)你知道多少
這篇文章主要為大家詳細介紹了Java的分支結(jié)構(gòu)與循環(huán),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-02-02
Spring容器-BeanFactory和ApplicationContext使用詳解
這篇文章主要為大家介紹了Spring容器-BeanFactory和ApplicationContext的使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-04-04
Java反轉(zhuǎn)字符串和相關(guān)字符編碼的問題解決
反轉(zhuǎn)字符串一直被當作是簡單問題,大家的思想主要就是利用遍歷,首尾交換字符實現(xiàn)字符串的反轉(zhuǎn)。例如下面的代碼,就可以簡單實現(xiàn)反轉(zhuǎn)。2013-05-05

