Spring-Cloud-Alibaba筆記02-項目設想嘗試

Spring-Cloud-Alibaba筆記02-項目設想嘗試

對於Spring Cloud Alibaba的組件來說,也就辣麼幾個,Nacos+Dubbo+Sentinel 就差不多了。

然後,這裏試着對簡單的微服務做個設想。

首先對於設想

直接看圖吧。大概就是這個樣子 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

在這裏插入圖片描述

這裏面畫出來的,還是缺少了一些東西的,比如網關,負載啥的!!!

歡迎提提建議,推薦些好玩的組件。


嘗試

主要的核心就是Nacos+Dubbo了,Sentinel 在上一篇筆記中已經搞定了的。

還有就是項目中的Dubbo接口獨立分包,進行統一管理,多項目實現-調用。

至於裏面各個項目 admin ,api,ser1-n 只要能連上Nacos+Dubbo 就可以了,具體各個項目內使用的技術可以隨便了。

項目結構

在這裏插入圖片描述
查不多就是這個樣子,作爲一個demo試試。

其中,api和pubSer爲前筆記的demo,這裏直接複製過來作爲接口的實現與消費。

而admin項目,爲舊項目修改,接入的。

由於就的項目使用的spring boot 版本爲2.0.2 ,所有吧對應的一些版本都調低了。

具體版本的問題查看文章:https://blog.csdn.net/qq_37143673/article/details/99292705

或者官方說明的地址:https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E

公共接口

這個只是個定義,正的只是個接口的定義!!!

public interface UserService {
    String test(String message);
	......
}

接口實現

作爲實現接口的項目,使用的前筆記的項目,這裏就再貼一下,主要的代碼吧!

@Service(group = "userServer-xiaohang" ,retries = 0,timeout = 10000)
public class UserServiceImpl implements UserService {
    @Override
    public String test(String message) {
        return "this is provider service's information:"+message;
    }
.........

罒ω罒,其實就是自動生成的demo項目 。。。

Dubbo調用

使用一整套,spring cloud alibaba 的項目,只要一個註解就可以調用。

【需要加載的包,和配置請查看上一篇筆記,或者直接去生成個demo項目也有的】

@RestController
public class DubboTest {

    @Reference   // 就是這注解,注入遠程的服務
    private UserService userService;

    @RequestMapping("/getDubboTest")
    public String getXhUser() {
        return userService.test("Consumer's Test!!");
    }
..........

舊項目admin 調整併入

新的項目的使用都沒有啥問題,但是在把舊項目併入的時候就發現了問題

Nacos 可以使用,但是Dubbo總是如法註冊,調用服務報錯空指針。

修改的內容:

pom文件的調整

感覺裏面還是多加載了部分包,但本着能用就行了,沒有去刪減掉。

		<dependency>
			<groupId>com.alibaba.cloud</groupId>
<!--			<groupId>org.springframework.cloud</groupId>-->
			<artifactId>spring-cloud-starter-dubbo</artifactId>
			<version>2.0.2.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-openfeign</artifactId>
			<version>2.0.2.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>com.alibaba.spring</groupId>
			<artifactId>spring-context-support</artifactId>
			<version>[latest version]</version>
		</dependency>
.....
<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>com.alibaba.cloud</groupId>
				<artifactId>spring-cloud-alibaba-dependencies</artifactId>
				<version>2.0.2.RELEASE</version>
				<type>pom</type>
				<scope>import</scope>
							<exclusions>
									<exclusion>
										<groupId>com.alibaba.cloud</groupId>
										<artifactId>spring-cloud-starter-dubbo</artifactId>
									</exclusion>
								</exclusions>
			</dependency>
			<dependency>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-dependencies</artifactId>
				<version>2.0.2.RELEASE</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
</dependencyManagement>

啓動調整:

Reference@EnableDubbo    //新增的
@DubboComponentScan 	//新增的  就是這個註解沒有,導致@Reference註解無效的 我也不知道爲什麼
@SpringBootApplication
@EnableDiscoveryClient  //服務發現的
@EnableCaching
public class CosonleApplication extends SpringBootServletInitializer  {
。。。。。。。

配置:

項目使用的yml配置的
新增的內容:
spring:
  cloud:
    nacos:
      discovery:
        server-addr: http://192.168.1.180:8848
    sentinel:
      transport:
        port: 8992
        dashboard: 10.0.100.208:8080  # 控制檯地址
      eager: true
dubbo:
  application:
    name: happyPay-sentinel-xiaohang-cloud-test
  registry:
    address: nacos://192.168.1.180:8848
  protocol:
    name: dubbo
    port: -1

代碼測試:

@Service
public class dubboService {

    @Reference(group = "userServer-xiaohang")   //默認不指定group的,沒有關係
    private UserService userService;

    public void dubbotest(){
        System.out.println("小杭測試 springcloud dubbo 的使用!!!!!");
        System.out.println(userService.test("Consumer's Test!!"));
 。。。。。。。。

此服務也可以在正常的控制層注入

    @Autowired
    com.ibeetl.cms.service.dubboService dubboService;

小結

試一下就可了的。

嘗試Nacos+Dubbo+Sentinel是可以的。這樣就可以簡單的吧一堆的舊項目搞一起了。

至於更多的整合,就需要在業務上進行拆分了,至少簡單併入,依照以上是沒問題的。

還有各種的組件,比如MQ,MyCAT,Redis等等等 項目夠大采用的到

小公司的項目,需要嗎 ╮(╯_╰)╭

圖片中的其他業務拆分,是個人對常用項目的理解上拆分的。看看就好,無需糾結。


2020-05-29 小杭


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章