日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

serverless 框架_Malaguv1.4.1支持Serverless的微服务框架

發布時間:2024/4/19 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 serverless 框架_Malaguv1.4.1支持Serverless的微服务框架 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Malagu 框架簡介

Malagu 基于 TypeScript 的 Serverless First、組件化、平臺無關的漸進式應用框架。

背景

當我們著手開發一個新項目的時候,單體和微服務架構該如何抉擇?對于創業團隊來說,更傾向于先采用單體架構來試錯,商業模式驗證成功后,再根據業務規模的增漲逐漸演進到微服務架構,從而解決單體架構帶來的臃腫、可維護性等等問題。

目前,微服務的落地方案有很多,也相當成熟,比如像 Spring Cloud、Dubbo 等等的微服務框架。而 Malagu 提供的微服務解決方案是 Serverless 優先的,更加貼合 Serverless 場景。Serverless 讓微服務框架的實現變得更加輕量,框架的使用更為簡單,而當我們在使用傳統微服務框架部署在 Serverless 平臺上的時候,我們會發現傳統微服務框架過于臃腫,很多在傳統服務器架構上很有用的功能,被 Serverless 底層給實現并透明掉了,讓開發者無需關心。比如服務注冊與發現、健康監控、日志、運維等等。

特征

Malagu 框架提供的微服務解決方案有如下特征:

  • 輕量級:沒有依賴第三方微服務模塊
  • 簡單:與普通后端服務開發風格保持一致,開箱即用,零學習成本
  • 平滑切換:單體無縫切換為微服務
  • 統一:前端與 BFF、BFF 與 微服務,微服務與微服務采用統一的 JSON RPC 通信協議
  • Serverless 優先

初始化微服務項目

Malagu 框架提供了一個微服務開發模板 microservice ,基于該模板,我們可以快速初始化一個微服務項目,當然,我們也可以創建 monorep 風格的項目,管理多個微服務項目,可以選擇模板 multi-component。初始化微服務項目命令如下:

# 初始化一個項目名稱為 user-service 的微服務項目malagu init user-service microservice

微服務項目目錄結構如下:

.├── README.md├── malagu.yml # 配置文件├── package.json├── src│ ├── common│ │ └── welcome-protocol.ts # 接口定義│ └── node│ ├── module.ts # 模塊定義│ └── welcome-server.ts # 接口實現└── tsconfig.json

開發微服務

  • 定義接口:
  • export const WelcomeServer = 'WelcomeServer';export interface WelcomeServer { say(): Promise;}
  • 實現接口
  • import { WelcomeServer } from '../common/welcome-protocol';import { Rpc } from '@malagu/rpc';@Rpc(WelcomeServer)export class WelcomeServerImpl implements WelcomeServer { say(): Promise { return Promise.resolve('Welcome to Malagu'); }}

    調用微服務

    方式一:使用配置文件定義微服務端點

    import { WelcomeServer } from 'user-service/common/welcome-protocol';import { Autorpc } from '@malagu/rpc';import { Component } from '@malagu/core';@Component()export class A { @Autorpc(WelcomeServer) protected welcomeServer: WelcomeServer; say(): Promise { return this.welcomeServer.say(); }}

    定義微服務端點:

    malagu: rpc: endpoint: # endpoint 的 key 需要與 @Autorpc 參數的字符串值保持一致 WelcomeServer: http://abc.com/api/WelcomeServer

    方式二:在 @Autorpc() 參數中直接定義微服務端點

    import { WelcomeServer } from 'user-service/common/welcome-protocol';import { Autorpc } from '@malagu/rpc';import { Component } from '@malagu/core';@Component()export class A { @Autorpc('http://abc.com/api/WelcomeServer') protected welcomeServer: WelcomeServer; say(): Promise { return this.welcomeServer.say(); }}

    微服務端點規則

    使用 Malagu 開發的微服務的端點規則為:[域名]/[路由前綴]/[RPC 前綴]/[服務標識]。其中:

    • 默認路由前綴(malagu.server.path)為 /
    • 默認 RPC 前綴(malagu.rpc.path)為 api
    • 服務標識一般定義為接口名稱,比如 WelcomeServer

    微服務端點占位符

    如果使用 Malagu 框架開發的微服務,端點的格式是統一的,為了簡化微服務端點的配置,框架提供了兩個占位符:

    • {rpcPath} 表示的值為:[路由前綴]/[RPC 前綴]
    • {erviceIdentifier} 表示的值為 [服務標識]

    在微服務調用的方式一中,配置文件還可以如下配置:

    malagu: rpc: endpoint: # endpoint 的 key 需要與 @Autorpc 參數的字符串值保持一致 WelcomeServer: http://abc.com{rpcPath}/{serviceIdentifier}

    使用默認端點進一步簡化配置:

    malagu: rpc: defaultEndpoint: http://abc.com{rpcPath}/{serviceIdentifier} # 只要你的微服務部署在同一個域名下

    微服務認證

    Malagu 框架提供了一個接口 ClientConfigProcessor ,該接口定義如下:

    import { AxiosRequestConfig } from 'axios';export const ClientConfigProcessor = Symbol('ClientConfigProcessor');export interface ClientConfigProcessor { process(config: AxiosRequestConfig): Promise;}

    框架把 HTTP 請求的配置參數傳遞給該接口的實現,通過該接口的實現,我們可以自定義 HTTP 請求配置參數,從而把我們的認證信息帶上。

    如果我們采用的是簡單認證,框架提供了一個配置屬性 malagu.rpc.client.config 。配置示例如下:

    malagu: rpc: client: config: auth: username: abc password: 123

    除了上面的配置屬性, AxiosRequestConfig 的其他屬性都可以通過 malagu.rpc.client.config 配置。

    與50位技術專家面對面20年技術見證,附贈技術全景圖

    總結

    以上是生活随笔為你收集整理的serverless 框架_Malaguv1.4.1支持Serverless的微服务框架的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。