主頁 >  其他 > RocketMQ技術全面決議(概念、設計理念與目標、資訊發送、同步發送--含代碼!)

RocketMQ技術全面決議(概念、設計理念與目標、資訊發送、同步發送--含代碼!)

2020-12-09 12:31:49 其他

在這里插入圖片描述在這里插入圖片描述

目錄

    • 1.RocketMQ 介紹
    • 2.核心概念
      • 2.1NameServer
      • 2.2主題
      • 2.3生產者
      • 2.4消費者
      • 2.5訊息
    • 3.核心概念
    • 4.RocketMQ 的設計理念和目標
      • 4.1設計理念
      • 4.2設計目標
    • 5.RocketMq 中訊息的發送
      • 5.1單向(OneWay)發送
        • 5.1.1.代碼演示
        • 5.1.2.Producer Group(生產者分組)
        • 5.1.3.Producer 實體
        • 5.1.4.Message Key
        • 5.1.5.Tag
      • 5.2.可靠同步發送
        • 5.2.1.Message ID
        • 5.2.2.SendStatus
        • 5.2.3Queue
      • 5.3.可靠異步發送
        • 5.3.1.代碼演示
      • 5.4.RocketMQ 中訊息發送的權衡

1.RocketMQ 介紹

訊息佇列 RocketMQ 是阿里巴巴集團基于高可用分布式集群技術,自主研發的云正式商用的專業訊息中間件,既可為分布式應用系統提供異步解耦 和削峰填谷的能力,同時也具備互聯網應用所需的海量訊息堆積、高吞吐、可靠重試等特性,是阿里巴巴雙 11 使用的核心產品,
RocketMQ 的設計基于主題的發布與訂閱模式,其核心功能包括訊息發送、訊息存盤(Broker)、訊息消費,整體設計追求簡單與性能第一,

  1. NameServer 設計及其簡單,RocketMQ 擯棄了業界常用的 Zookeeper 充當訊息管理的“注冊中心”,而是使用自主研發的 NameServer 來實作各 種元資料的管理(Topic 路由資訊等)
  2. 高效的 I/O 存盤,RocketMQ 追求訊息發送的高吞吐量,RocketMQ 的訊息存盤設計成檔案組的概念,組內單個檔案固定大小,引入了記憶體映射機 制,所有主題的訊息存盤基于順序讀寫,極大提高訊息寫性能,同時為了兼顧訊息消費與訊息查找,引入訊息消費佇列檔案與索引檔案
  3. 容忍存在設計缺陷,適當將某些作業下放給 RocketMQ 的使用者,比如訊息只消費一次,這樣極大的簡化了訊息中間件的內核,使得 RocketMQ 的實作發送變得非常簡單與高效,
    RocketMQ 原先阿里巴巴內部使用,與 2017 年提交到 Apache 基金會成為 Apache 基金會的頂級開源專案,GitHub 代碼庫鏈接:https://github.com/apache/rocketmq.git
    RocketMQ 的官網 http://rocketmq.apache.org/

MQ:訊息中間件是什么?
訊息中間件屬于分布式系統中一個子系統,關注于資料的發送和接收,利用高效可靠的異步訊息傳遞機制對分布式系統中的其余各個子系統進行集成

2.核心概念

image.png

2.1NameServer

NameServer 是整個 RocketMQ 的“大腦”,它是 RocketMQ 的服務注冊中心,所以 RocketMQ需要先啟動 NameServer 再啟動 Rocket 中的 Broker

Broker 在啟動時向所有 NameServer 注冊(主要是服務器地址等),生產者在發送訊息之前先從 NameServer 獲取 Broker 服務器地址串列(消費者一 樣),然后根據負載均衡演算法從串列中選擇一臺服務器進行訊息發送,
NameServer與每臺 Broker 服務保持長連接,并間隔 30S 檢查 Broker 是否存活,如果檢測到 Broker 宕機,則從路由注冊表中將其移除,這樣就可以實 現 RocketMQ 的高可用,具體細節后續的課程會進行講解,

2.2主題

主題,Topic,訊息主題,一級訊息型別,生產者向其發送訊息,消費者負責從 Topic 接收并消費訊息,

2.3生產者

生產者:也稱為訊息發布者,負責生產并發送訊息至 Topic

2.4消費者

消費者:也稱為訊息訂閱者,負責從 Topic 接收并消費訊息,

2.5訊息

訊息:生產者或消費者進行訊息發送或消費的主題,對于 RocketMQ 來說,訊息就是位元組陣列,

3.核心概念

以下我們將總結下 Rocket 的整體運轉,

  1. NameServer 先啟動
  2. Broker 啟動時向 NameServer 注冊
  3. 生產者在發送某個主題的訊息之前先從 NamerServer 獲取 Broker 服務器地址串列(有可能是集群),然后根據負載均衡演算法從串列中選擇一臺 Broker 進行訊息發送,
  4. NameServer 與每臺 Broker 服務器保持長連接,并間隔 30S 檢測 Broker 是否存活,如果檢測到 Broker 宕機(使用心跳機制,如果檢測超過 120S),則從路由注冊表中將其移除,
  5. 消費者在訂閱某個主題的訊息之前從 NamerServer 獲取 Broker 服務器地址串列(有可能是集群),但是消費者選擇從 Broker 中 訂閱訊息,訂閱 規則由 Broker 配置決定,

點我獲取RocketMQ完整筆記-》》》》》》》》》》》》

4.RocketMQ 的設計理念和目標

4.1設計理念

整體設計思想 **80%**借鑒 Kafka.
基于主題的發布和訂閱,其核心功能,訊息發送、訊息存盤和訊息消費,整體設計追求簡單與性能, NameServer 性能對比 Zookeeper 有極大的提升
高效的 IO 存盤機制,基于檔案順序讀寫,記憶體映射機制
容忍設計缺陷,比如訊息只消費一次,Rocket 自身不保證,從而簡化 Rocket 的內核使得 Rocket 簡單與高效,這個問題交給消費者去實作(冪等),

4.2設計目標

架構模式:發布訂閱模式,主要組件:訊息發送者、訊息服務器(訊息存盤)、訊息消費、路由發現,
順序訊息RocketMQ 可以嚴格保證訊息有序
訊息過濾:訊息消費是,消費者可以對同一主題下的訊息按照規則只消費自己感興趣的訊息,可以支持在服務端與消費端的訊息過濾機制,
訊息存盤:一般 MQ 核心就是訊息的存盤,對存盤一般來說兩個維度:訊息堆積能力和訊息存盤性能,RocketMQ 追求訊息存盤的高性能,引入記憶體映 射機制,所有的主題訊息順序存盤在同一個檔案中,同時為了防止無限堆積,引入訊息檔案過期機制和檔案存盤空間報警機制,
訊息高可用

  1. Rocket 關機、斷電等情況下,Rokcet 可以確保不丟失訊息(同步刷盤機制不丟失,異步刷盤會丟失少量),
  2. 另外如果 Rocket 服務器因為 CPU、記憶體、主板、磁盤等關鍵設備損壞導致無法開機,這個屬于單點故障,該節點上的訊息全部丟失,如果開啟了 異步復制機制,Rocket 可以確保只丟失很少量訊息,
  3. 如果引入雙寫機制,這樣基本上可以滿足訊息可靠性要求極高的場景(畢竟兩臺主服務器同時故障的可能性還是非常小)
    訊息消費低延遲RocketMQ在訊息不發生訊息堆積時,以長輪詢模式實作準實時的訊息推送模式,
    確保訊息必須被消費一次:訊息確認機制(ACK)來確保訊息至少被消費一次,一般 ACK 機制只能做到訊息只被消費一次,有重復消費的可能,
    訊息回溯:已經消費完的訊息,可以根據業務要求重新消費訊息,
    訊息堆積:訊息中間件的主要功能是異步解耦,還有個重要功能是擋住前端的資料洪峰,保證后端系統的穩定性,這就要求訊息中間件具有一定的 訊息堆積能力,RocketMQ 采用磁盤檔案存盤,所以堆積能力比較強,同時提供檔案過期洗掉機制,
    定時訊息:定時訊息,定時訊息是指訊息發送到 Rocket Broker 上之后,不被消費者理解消費,要到等待一定的時間才能進行消費,apache 的版本目 前只支持等待指定的時間才能被消費,不支持任意精度的定時訊息消費,(一個說法是任意精度的定時訊息會帶來性能損耗,但是阿里云版本的 RocketMQ 卻提供這樣的功能,充值收費優先策略?)
    訊息重試機制:訊息重試是指在訊息消費時,如果發送例外,那么訊息中間件需要支持訊息重新投遞,RocketMQ 支持訊息重試機制,

5.RocketMq 中訊息的發送

普通訊息是指訊息佇列 RocketMQ 中無特性的訊息,區別于有特性的定時/延時訊息、順序訊息和事務訊息,這些后續會細講, RocketMQ 發送普通訊息有三種實作方式:單向(OneWay)發送、可靠同步發送、可靠異步發送,
訊息生產的客戶端依賴如下
image.png

broker.conf

#是否允許 **Broker** 自動創建 Topic,建議線下開啟,線上關閉 
autoCreateTopicEnable=true 
#是否允許 Broker 自動創建訂閱組,建議線下開啟,線上關閉 
autoCreateSubscriptionGroup=true

5.1單向(OneWay)發送

5.1.1.代碼演示

image.png

單向(Oneway)發送特點為發送方只負責發送訊息,不等待服務器回應且沒有回呼函式觸發,即只發送請求不等待應答,此方式發送訊息的程序耗 時非常短,一般在微秒級別,cn.enjoyedu.normal.OnewayProducer
image.png

點我獲取RocketMQ完整筆記-》》》》》》》》》》》》》》》》》》

5.1.2.Producer Group(生產者分組)

生產者組,簡單來說就是多個發送同一類訊息的生產者稱之為一個生產者組,在這里可以不用關心,只要知道有這么一個概念即可,RocketMQ 中的 生產者組只能有一個在用的生產者,分組的作用如下(簡單的場景不需要了解這個概念):

  1. 標識一類 Producer
  2. 可以通過運維工具查詢這個發送訊息應用下有多個 Producer 實體
  3. 發送分布式事務訊息時,如果 Producer 中途意外宕機,Broker 會主動回呼 Producer Group 內的任意一臺機器來確認事務狀態,

5.1.3.Producer 實體

Producer 的一個物件實體,不同的 Producer 實體可以運行在不同行程內或者不同機器上,Producer 實體執行緒安全,可在同一行程內多執行緒之間共 享,

5.1.4.Message Key

Key 一般用于訊息在業務層面的唯一標識,對發送的訊息設定好 Key,以后可以根據這個 Key 來查找訊息,比如訊息例外,訊息丟失,進行查找會很 方便,RocketMQ 會創建專門的索引檔案,用來存盤 Key 與訊息的映射,由于是 Hash 索引,應盡量使 Key 唯一,避免潛在的哈希沖突,
TagKey 的主要差別是使用場景不同,Tag 用在 Consumer 代碼中,用于服務端訊息過濾,Key 主要用于通過命令進行查找訊息
RocketMQ 并不能保證 message id 唯一,在這種情況下,生產者在 push 訊息的時候可以給每條訊息設定唯一的 key, 消費者可以通過 message key 保證對訊息冪等處理,

5.1.5.Tag

訊息標簽,二級訊息型別,用來進一步區分某個 Topic 下的訊息分類,
TopicTag 都是業務上用來歸類的標識,區分在于 Topic 是一級分類,而 Tag 可以理解為是二級分類,
以天貓交易平臺為例,訂單訊息和支付訊息屬于不同業務型別的訊息,分別創建 Topic_OrderTopic_Pay,其中訂單訊息根據商品品類以不同的 Tag 再進行細分,如電器類、男裝類、女裝類、化妝品類,最后他們都被各個不同的系統所接收,
通過合理的使用 TopicTag,可以讓業務結構清晰,更可以提高效率,
您可能會有這樣的疑問:到底什么時候該用 Topic,什么時候該用 Tag?
1)訊息型別是否一致:如普通訊息、事務訊息、定時(延時)訊息、順序訊息,不同的訊息型別使用不同的 Topic,無法通過 Tag 進行區分,
2)業務是否相關聯:沒有直接關聯的訊息,如淘寶交易訊息,京東物流訊息使用不同的 Topic 進行區分;而同樣是天貓交易訊息,電器類訂單、女 裝類訂單、化妝品類訂單的訊息可以用 Tag 進行區分,
3)訊息優先級是否一致:如同樣是物流訊息,盒馬必須小時內送達,天貓超市 24 小時內送達,淘寶物流則相對會慢一些,不同優先級的訊息用不 同的 Topic 進行區分,
4)訊息量級是否相當:有些業務訊息雖然量小但是實時性要求高,如果跟某些萬億量級的訊息使用同一個 Topic,則有可能會因為過長的等待時間 而“餓死”,此時需要將不同量級的訊息進行拆分,使用不同的 Topic

5.2.可靠同步發送

####代碼演示
image.png

同步發送是指訊息發送方發出資料后,同步等待,直到收到接收方發回回應之后才發下一個請求,
image.png
點我獲取更多-》》》》》》》》》》》》》》》》》》

5.2.1.Message ID

訊息的全域唯一標識(內部機制的 ID 生成是使用機器 IP 和訊息偏移量的組成,所以有可能重復,如果是冪等性還是最好考慮 Key),由訊息佇列 MQ 系統自動生成,唯一標識某條訊息,

5.2.2.SendStatus

發送的標識,成功,失敗等

5.2.3Queue

image.png

RocketMQ 收到訊息后,所有主題的訊息都存盤在 commitlog檔案中,當訊息到達 commitlog 后,將會采用異步轉發到訊息佇列,也就是 consumerqueue, Queue 是資料分片的產物,資料分片可以提高消費者的效率,(這個也是 RocketMQ 對比 Kafka 的不同,存盤設計時有佇列的概念)
image.png

broker.conf

# 在發送訊息時,自動創建服務器不存在的 topic,默認創建的佇列數 
defaultTopicQueueNums=4

5.3.可靠異步發送

5.3.1.代碼演示

image.png

訊息發送方在發送了一條訊息后,不等接收方發回回應,接著進行第二條訊息發送,發送方通過回呼介面的方式接收服務器回應,并對回應結果進 行處理
image.png

5.4.RocketMQ 中訊息發送的權衡

三種發送方式的對比
image.png

整理不易!點個關注,收藏一下吧!

點我獲取RocketMQ完整筆記-》》》》》》》》》》》》》》》》》》

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/232014.html

標籤:其他

上一篇:位元組跳動三面offer到手,面試官都問了些啥?

下一篇:2020面試王者級別總結,這套JVM+MySQL性能調優的面試題成功C位出道,附答案分享!

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more