1. 程式人生 > 實用技巧 >Mybatis實現基本的增刪改查

Mybatis實現基本的增刪改查



正式步入分散式的學習了


1. Dubbo是什麼

Dubbo是一個RPC框架,簡單來說就是實現不同主機間的功能呼叫的框架,其中需要建立網路連線以及引數傳遞需要的序列化操作,這二者影響了RPC框架的速度,RPC介紹

From Dubbo文件

我們開發的架構發展:

  • 單一應用架構:站點流量小,只需一個所有功能都部署在一起的應用,此時關鍵用ORM框架可簡化開發
  • 垂直應用架構:訪問量增大,單一應用的叢集部署帶來的加速度減緩,此時關鍵將應用拆分成互不相干的幾個應用獨立部署到不同機器上,此時應用上了MVC框架
  • 分散式服務架構:垂直應用增多,應用之間存在互動,那麼應將互動的核心業務抽取出來作為獨立的服務形成服務中心,此時關鍵用提高業務複用及整合的分散式服務框架
  • 流動計算架構(SOA):服務越來越多,不同服務的訪問壓力和佔有資源容易出現浪費,此時關鍵增加一個排程中心基於訪問壓力實時管理叢集容量,提高叢集利用率(哪個服務壓力大就對應就增加幾臺機器)




2. 架構流程

  1. RPC框架容器啟動,然後初始化服務
  2. 提供者把服務註冊到註冊中心
  3. 消費者向註冊中心訂閱所需服務
  4. 若服務功能有所改變,那麼會通過長連線推送給消費者
  5. 遠端呼叫(同步的)
  6. 呼叫資訊,呼叫時間會定時非同步發給監控中心




3. 環境搭建


3.1 註冊中心

官方推薦使用 ZooKeeper 來作為註冊中心


3.2 監控中心

Dubbo的監控中心是前後端分離的,前端Vue,後端SpringBoot

具體可參考 官方文件部署


筆者在本地搭建全部環境,然後埠弄了一團糟,這裡需要注意:

  • ZooKeeper啟動佔用2181,8080埠
  • 監控中心的後端SpringBoot預設也是8080,需要自行修改,比如:server.port=8088
  • 監控中心的前端Vue預設代理8080,自行修改vue.config.js,要和後端埠一致:target: ''http://localhost:8088/''




4. SpringBoot搭建Dubbo

使用註解和配置檔案方式來配置


4.1 新增依賴、開啟Dubbo註解

<dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>2.7.3</version>
</dependency>

<!--  操作Zookeeper的,starter裡面沒有自帶,因為註冊中心自己選擇  -->
<dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-recipes</artifactId>
    <version>4.2.0</version>
</dependency>
// 主應用函式上添加註解
@EnableDubbo
@SpringBootApplication
public class XXXXApplication {

    public static void main(String[] args) {
        SpringApplication.run(XXXXApplication.class, args);
    }
}

4.2 Provider

  • 編寫介面及其實現類(舉例一個兩數之和)
@Service    // 向註冊中心暴露服務,是Dubbo的註解
@Component  // IOC加入容器,別和@Service的業務層搞混
public class SumServiceImpl implements SumService {
    @Override
    public int sum(int a, int b) {
        return a+b;
    }
}
  • 配置檔案properties
# provider的應用名字,用於計算依賴關係
dubbo.application.name=com.howl.dubbo.provider

# 註冊中心地址、通訊協議
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.registry.protocol=zookeeper

# 與消費者通訊的協議、埠號
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880

4.3 Consumer

  • 在需要遠端呼叫的屬性上加入@Reference註解,則會進行動態代理
@RestController
public class SumController {

    @Reference
    SumService sumService;

    @GetMapping("/")
    public String sum(Integer a,Integer b){
        return String.valueOf( sumService.sum(a,b) );
    }
}
  • 配置檔案properties
# consumer的應用資訊,用於計算依賴關係
dubbo.application.name=com.howl.dubbo.consumer

# 註冊中心地址、協議
dubbo.registry.address=zookeeper://127.0.0.1:2181

注意:

Consumer的介面全限定類名一定要和Provider的一致,否則Zookeeper裡面路徑不同,找不到提供者

Dubbo推薦將服務介面、服務模型、服務異常等均放在 API 包中,這樣二者就實現共享



至此Dubbo的簡單入門就完成了,下一篇會加入Dubbo的配置、原理、高可用等筆記