diff --git a/doc/apache/apache-release-procedure-20200306.md b/doc/apache/apache-release-procedure-20200306.md deleted file mode 100644 index 3f677ff56b8a97f881ae3d1b9bf842754ddb05ab..0000000000000000000000000000000000000000 --- a/doc/apache/apache-release-procedure-20200306.md +++ /dev/null @@ -1,448 +0,0 @@ - -# Apache 杞欢鍙戠増娴佺▼ - -> author: wongoo@apache.org -> last updated: 2020-03-06 - -Apache寮€婧愯蒋浠舵槸鏈夌ぞ鍖洪┍鍔ㄧ殑锛屼负浜嗘彁楂樺彂甯冭蒋浠惰川閲忚€屾寚瀹氫簡杞欢鍙戝竷娴佺▼锛屾湰鏂囦富瑕佷粙缁嶆娴佺▼锛屼互缁欑涓€娆″彂甯冩墦鍖呯殑apacher鍙傝€冦€� - -濡傛灉浣犺鍑嗗鎵撳寘涓€涓猘pache杞欢浜嗭紝鎯冲繀浣犲凡缁忔槸涓€涓」鐩殑committer浜嗭紝鑰屼笖鐭ラ亾绀惧尯銆丳MC杩欎簺姒傚康锛岃€屼綘鐜板湪杩樻媴浠绘湰娆″彂甯冪殑 release manager 涓€鑱屻€� - -鍙戠増娴佺▼鍏跺疄涔熷緢绠€鍗曪紝鏃犻潪濡備笅锛� -1. 鏁寸悊鍙樻洿鍐呭锛屾墦鍖呭苟瀵规墦鍖呮枃浠剁鍚嶏紱 -2. 灏嗙鍚嶆枃浠朵笂浼燼pache svn浠撳簱锛� -3. 鍙戦偖浠惰绀惧尯PMC澶т浆鎶曠エ锛� -4. 鎶曠エ閫氳繃鍚庡彂涓€涓姇绁ㄧ粨鏋滈€氬憡閭欢锛� -5. 鍙戠増 -6. 鍙戠増閭欢閫氬憡绀惧尯鏂扮増鏈彂甯冿紱 - -涓嬮潰璇︾粏鏁寸悊鍙戠増鐨勪竴浜涙祦绋嬫楠わ紝浣跨敤 dubbo 鐨勫瓙椤圭洰 dubbog-go-hessian2 鍙戠増涓轰緥锛� - - -## 1. 鍙戠増鍑嗗 - -鍙戠増鏂囦欢闇€瑕佺鍚嶏紝闇€瑕佸畨瑁卲gp宸ュ叿. - -```bash -$ brew install gpg -$ gpg --version -$ gpg --full-gen-key - (1) RSA and RSA (default) <-- RSA 绫诲瀷 - What keysize do you want? (2048) 4096 <-- key澶у皬涓�4096 - 0 = key does not expire <-- 姘镐笉杩囨湡 - Real name: Liu Yang - Email address: wongoo@apache.org - Comment: CODE SIGNING KEY - - gpg: /Users/gelnyang/.gnupg/trustdb.gpg: trustdb created - gpg: key 7DB68550D366E4C0 marked as ultimately trusted - gpg: revocation certificate stored as '/Users/gelnyang/.gnupg/openpgp-revocs.d/1376A2FF67E4C477573909BD7DB68550D366E4C0.rev' - public and secret key created and signed. - - pub rsa4096 2019-10-17 [SC] - 1376A2FF67E4C477573909BD7DB68550D366E4C0 - uid Liu Yang (CODE SIGNING KEY) <wongoo@apache.org> - sub rsa4096 2019-10-17 [E] - -$ gpg --list-keys - gpg: checking the trustdb - gpg: marginals needed: 3 completes needed: 1 trust model: pgp - gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u - /Users/gelnyang/.gnupg/pubring.kbx - ---------------------------------- - pub rsa4096 2019-10-17 [SC] - 1376A2FF67E4C477573909BD7DB68550D366E4C0 - uid [ultimate] Liu Yang (CODE SIGNING KEY) <wongoo@apache.org> - sub rsa4096 2019-10-17 [E] - - -# 鍏挜鏈嶅姟鍣ㄦ槸缃戠粶涓婁笓闂ㄥ偍瀛樼敤鎴峰叕閽ョ殑鏈嶅姟鍣� -# 閫氳繃key id鍙戦€乸ublic key鍒発eyserver -$ gpg --keyserver pgpkeys.mit.edu --send-key 1376A2FF67E4C477573909BD7DB68550D366E4C0 - gpg: sending key 7DB68550D366E4C0 to hkp://pgpkeys.mit.edu -# 鍏朵腑锛宲gpkeys.mit.edu涓洪殢鎰忔寫閫夌殑keyserver锛宬eyserver鍒楄〃涓猴細https://sks-keyservers.net/status/锛屼负鐩镐簰涔嬮棿鏄嚜鍔ㄥ悓姝ョ殑锛岄€変换鎰忎竴涓兘鍙互銆� - -# 濡傛灉鏈夊涓猵ublic key锛岃缃粯璁ey銆備慨鏀� ~/.gnupg/gpg.conf -$ vi ~/.gnupg/gpg.conf -default-key 7DB68550D366E4C0 - -# 濡傛灉鏈夊涓猵ublic key, 涔熷彲浠ュ垹闄ゆ棤鐢ㄧ殑key锛� -### 鍏堝垹闄ょ閽ワ紝鍐嶅垹闄ゅ叕閽� -$ gpg --yes --delete-secret-keys shenglicao2@gmail.com ###鑰佺殑绉侀挜锛屾寚鏄庨偖绠卞嵆鍙� -$ gpg --delete-keys 1808C6444C781C0AEA0AAD4C4D6A8007D20DB8A4 - -## 鐢变簬鍏挜鏈嶅姟鍣ㄦ病鏈夋鏌ユ満鍒讹紝浠讳綍浜洪兘鍙互鐢ㄤ綘鐨勫悕涔変笂浼犲叕閽ワ紝鎵€浠ユ病鏈夊姙娉曚繚璇佹湇鍔″櫒涓婄殑鍏挜鐨勫彲闈犳€с€� -## 閫氬父锛屼綘鍙互鍦ㄧ綉绔欎笂鍏竷涓€涓叕閽ユ寚绾癸紝璁╁叾浠栦汉鏍稿涓嬭浇鍒扮殑鍏挜鏄惁涓虹湡銆� -# fingerprint鍙傛暟鐢熸垚鍏挜鎸囩汗锛� -$ gpg --fingerprint wongoo - - pub rsa4096 2019-10-17 [SC] - 1376 A2FF 67E4 C477 5739 09BD 7DB6 8550 D366 E4C0 - uid [ultimate] Liu Yang (CODE SIGNING KEY) <wongoo@apache.org> - sub rsa4096 2019-10-17 [E] - # 灏嗕笂闈㈢殑 fingerprint 锛堝嵆 1376 A2FF 67E4 C477 5739 09BD 7DB6 8550 D366 E4C0锛夌矘璐村埌鑷繁鐨勭敤鎴蜂俊鎭腑锛� - # https://id.apache.org OpenPGP Public Key Primary Fingerprint: -``` - -> 璇︾粏鍙傝€冿細 -> - 鍙戝竷绛惧悕: http://www.apache.org/dev/release-signing.html -> - 鍙戝竷绛栫暐: http://www.apache.org/dev/release-distribution -> - 灏嗗瘑閽ヤ笂浼犲埌鍏叡瀵嗛挜鏈嶅姟鍣�: https://www.apache.org/dev/openpgp.html#generate-key - -## 2. 鎵撳寘绛惧悕 - -鍑嗗鎵撳寘鍓嶏紙灏ゅ叾鎻愮涓€娆℃墦鍖咃級闇€瑕佹敞鎰忎互涓嬪唴瀹�: -- 姣忎釜鏂囦欢鐨凩ICENSE澶撮儴鏄惁姝g‘, 鍖呮嫭 `*.java`, `*.go`, `*.xml`, `Makefile` 绛� -- LICENSE 鏂囦欢鏄惁瀛樺湪 -- NOTICE 鏂囦欢鏄惁瀛樺湪 -- CHANGE.md 鏄惁瀛樺湪 锛堝彉鏇村唴瀹规牸寮忕鍚堣鑼冿級 - -浠ヤ笂鍙互鍙傝€冨叾浠栧凡鍙戝竷椤圭洰鐨勯厤缃€� - - -``` - -# NOTICE: 杩欓噷鍒囧垎鏀紝鍒嗘敮鍚嶇О涓嶈鍜岀増鏈彿锛坱ag鐢級绫讳技锛屼笉鐒朵細鏈夊啿绐� -$ git checkout -b 1.4 - -$ git tag -a v1.4.0-rc1 -m "v1.4.0 release candidate 1" - -$ git push --tags - -# 鎵撳寘 -$ git archive --format=tar 1.4 --prefix=dubbo-go-hessian2-v1.4.0/ | gzip > dubbo-go-hessian2-v1.4.0-src.tar.gz - -# 绛惧悕 -$ gpg -u wongoo@apache.org --armor --output dubbo-go-hessian2-v1.4.0-src.tar.gz.asc --detach-sign dubbo-go-hessian2-v1.4.0-src.tar.gz - -# 楠岃瘉绛惧悕 -$ gpg --verify dubbo-go-hessian2-v1.4.0-src.tar.gz.asc dubbo-go-hessian2-v1.4.0-src.tar.gz - -# hash -$ shasum -a 512 dubbo-go-hessian2-v1.4.0-src.tar.gz > dubbo-go-hessian2-v1.4.0-src.tar.gz.sha512 - -# 楠岃瘉 hash -$ shasum --check dubbo-go-hessian2-v1.4.0-src.tar.gz.sha512 - -``` - -> 鍙戝竷鐗堟湰: http://www.apache.org/dev/release-publishing.html - -## 3. 涓婁紶鎵撳寘鏂囦欢鍒皊vn浠撳簱 - -``` -$ svn checkout https://dist.apache.org/repos/dist/dev/dubbo - -$ cd dubbo - -# 鏇存柊 -$ svn update - -# 娣诲姞 绛惧悕 鍜� public key 鍒癒EYS鏂囦欢骞舵彁浜ゅ埌SVN浠撳簱 -# 杩欓噷鏄皢鍏挜KEYS鏀惧埌鏍圭洰褰�, 鏈夌殑椤圭洰鏀惧埌鏈鎵撳寘鏂囦欢鐩綍 -$ (gpg --list-sigs wongoo && gpg --armor --export wongoo) >> KEYS - -$ mkdir -p dubbo-go-hessian2/v1.4.0-rc1 - -# 鎷疯礉鐩稿叧鏂囦欢鍒版柊寤虹洰褰曚笅 - -$ tree dubbo-go-hessian2 -dubbo-go-hessian2 -鈹斺攢鈹€ v1.4.0-rc1 - 鈹溾攢鈹€ dubbo-go-hessian2-v1.4.0-src.tar.gz - 鈹溾攢鈹€ dubbo-go-hessian2-v1.4.0-src.tar.gz.asc - 鈹斺攢鈹€ dubbo-go-hessian2-v1.4.0-src.tar.gz.sha512 - -$ svn add dubbo-go-hessian2 -$ svn add dubbo-go-hessian2/* -$ svn status -$ svn commit --username wongoo -m "Release dubbo-go-hessian2 v1.4.0-rc1" -``` - -> 璇︾粏鍙傝€�: svn鐗堟湰绠$悊 https://www.apache.org/dev/version-control.html - - -## 4. 鍙戞姇绁� [VOTE] 閭欢 - -鍙戜换浣曢偖浠堕兘鏄湁涓€瀹氭牸寮忕殑锛屼綘鍔犲叆绀惧尯閭欢鍒楄〃鍚庯紝灏变細鏀跺埌寰堝杩欐牱鐨勯偖浠讹紝澶氱湅鐪嬪氨鐭ラ亾浜嗭紝鍏蜂綋閭欢鑼冩湰鍙傝€冩枃绔犲悗闈㈢殑閭欢鑼冩湰銆� - -鍙戝畬銆怴OTE銆戦偖浠讹紝绉佷笅娌熼€氱兢閲岄潰璇峰ぇ浣琍MC鎶曠エ銆� -PMC鎶曠エ浼氬浣犱笂浼犳墦鍖呮枃浠惰繘琛岀浉鍏虫鏌�, -璇︾粏鍙互浜嗚В瀛靛寲涓殑椤圭洰鍙戝竷瀹屾暣鐨勬鏌ラ」鍙傝€冿細 https://cwiki.apache.org/confluence/display/INCUBATOR2/IncubatorReleaseChecklist - -鏀跺埌3涓猙inding閭欢涓旇秴杩�72灏忔椂鍚庯紝灏卞彲浠ュ彂 鎶曠エ缁撴灉 [RESULT] [VOTE] 閭欢浜嗐€� - -> 鍘熷垯涓婂彧鏈塒MC鐨勬姇绁ㄦ墠绠梑inding閭欢, 褰撶劧涔熷彲浠ョ敱绀惧尯鍐冲畾銆� - -杩欎竴姝ラ鏈€甯歌鏈変互涓嬮棶棰橈細 -- 鏂囦欢绛惧悕鏈夐棶棰� -- 寮曠敤椤圭洰LICENSE闂 -- 鍗曞厓娴嬭瘯涓嶉€氳繃 - -> 鍙﹀闇€瑕佹敞鎰�: 涓€涓猘pache椤圭洰鍙兘鍖呭惈寰堝瀛愰」鐩紝椤圭洰鐨凱MC鍙兘鍙涓婚」鐩瘮杈冧簡瑙o紝 浠栦滑骞朵笉娓呮濡備綍灏嗗瓙椤圭洰璺戣捣鏉ワ紝涔熶笉鐭ラ亾濡備綍璺戝崟鍏冩祴璇曪紝鏈€濂藉湪閭欢涓檮甯︿竴涓浣曡繘琛屽崟鍏冩祴璇曠殑杩炴帴銆備緥濡� PMC 鏈€浜嗚В java锛屼絾瀛愰」鐩槸golang锛宲ython锛宩s绛夛紝浣犻渶瑕佸憡璇変粬浠浣曟祴璇曚綘鐨勯」鐩€� - -鍙互鍙傝€冩姇绁ㄨ鍒�: https://www.apache.org/foundation/voting.html - -## 5. 鍙戝竷鐗堟湰 - -褰撴寮忓彂甯冩姇绁ㄦ垚鍔熷悗锛屽厛鍙慬Result]閭欢锛岀劧鍚庡氨鍑嗗 release package銆� -灏嗕箣鍓嶅湪dev涓嬪彂甯冪殑瀵瑰簲rc鏂囦欢澶逛笅鐨勬簮鐮佸寘銆佺鍚嶆枃浠跺拰hash鏂囦欢鎷疯礉鍒板彟涓€涓洰褰� v1.4.0锛� -娉ㄦ剰鏂囦欢鍚嶅瓧涓笉瑕乺cxx (鍙互rename锛屼絾涓嶈閲嶆柊璁$畻绛惧悕锛宧ash鍙互閲嶆柊璁$畻锛岀粨鏋滀笉浼氬彉)銆� - -灏唕elease鍖呯Щ鍔ㄥ埌姝e紡鐗堢洰褰曘€傚鏋滀綘鐨勮蒋浠舵槸闇€瑕佸鎴蜂粠apache涓嬭浇鐨勶紝鍒欒繖涓€姝ユ槸蹇呴』鐨勩€傚鏋滀笉鏄紝姣斿golang寮曠敤github鎵撳寘鍦板潃鐨勫垯鍙互蹇界暐銆� -``` -svn up -cd dubbo-go-hessian2 -svn move v1.4.0-rc1 v1.4.0 -svn status -svn commit --username wongoo -m "Release dubbo-go-hessian2 v1.4.0" -``` - -绉诲埌鍙戠増鐩綍鍚庯紝杩橀渶瑕佽繘琛岀浉搴旂殑姝e紡鐗堟湰鍙戝竷锛� 杩欓噷灏嗗叿浣撳彂甯冩柟寮忔暣鐞嗗埌鍗曠嫭鐨勭珷鑺� `7. 涓嶅悓璇█鐗堟湰鍙戝竷`锛屽洜涓哄彂甯冩祦绋嬮┈涓婂氨瑕佺粨鏉熶簡 ^v^ - - -## 6. 鏂扮増鏈€氬憡 ANNOUNCE 閭欢 - -鎭枩浣犱綘宸茬粡鍒板彂鐗堟渶鍚庝竴姝ヤ簡锛岄偖浠舵牸寮忓弬鑰冧互涓嬮偖浠惰寖鏈紒 - - -## 7. 涓嶅悓璇█鐗堟湰鍙戝竷 - -### 7.1 golang - -鍦� github 鍩轰簬鎶曠エ鍒嗘敮鍙戝竷浜� release 鐗堟湰銆� - -### 7.2 java - -java椤圭洰鍙戠増闇€鍙戝竷鍒癹ava maven浠撳簱銆� - -TODO - -### 7.3 js - -js椤圭洰鍙戠増闇€鍙戝竷鍒皀pm浠撳簱銆� - -TODO - -### 7.4 python - -TODO - -## 8. 閭欢鑼冩湰 - -### 8.1. 鎻愬嚭鍙戠増鎶曠エ - -- TO: dev@dubbo.apache.org -- Title: [VOTE] Release Apache dubbo-go-hessian2 v1.4.0 RC1 - -``` -Hello Dubbo/Dubbogo Community, - - This is a call for vote to release Apache dubbo-go-hessian2 version v1.4.0 RC1. - - The release candidates: https://dist.apache.org/repos/dist/dev/dubbo/dubbo-go-hessian2/v1.4.0-rc1/ - Git tag for the release: https://github.com/apache/dubbo-go-hessian2/tree/1.4 - Hash for the release tag: 4c31e88c35afe84c0321d9f12f036e6d3c8962d0 - Release Notes: https://github.com/apache/dubbo-go-hessian2/blob/1.4/CHANGE.md - The artifacts have been signed with Key :7DB68550D366E4C0, which can be found in the keys file: - https://dist.apache.org/repos/dist/dev/dubbo/KEYS - - The vote will be open for at least 72 hours or until necessary number of votes are reached. - - Please vote accordingly: - [ ] +1 approve - [ ] +0 no opinion - [ ] -1 disapprove with the reason - - Thanks, - The Apache Dubbo-go Team - ``` - - -### 8.2. PMC 鎶曠エ閭欢鍥炲 - - -鑼冧緥1锛� -``` -+1 approve <-- 棣栧厛琛ㄦ槑鍚屼笉鍚屾剰 - -I have checked: <-- 鍏舵瑕佽鏄庤嚜宸辨鏌ヤ簡鍝簺椤� - -1.source code can build <-- 鑳藉惁鏋勫缓 -2.tests can pass in my local <-- 鍗曞厓娴嬭瘯鑳藉惁閫氳繃 -3. NOTICE LICENSE file exist <-- 鍗忚鏂囦欢鏄惁瀛樺湪 -4.git tag is correct <-- git tag 鏄惁姝g‘ - -there is one minor thing that in change logs file, there is no space -between text And link. I suggest add one to make it looks better. <--- 涓€浜涘叾浠栨敼杩涘缓璁� -``` - -鑼冧緥2锛� -``` -+1 - -I checked the following items: - -[v] Are release files in correct location? <-- 鍙戝竷鏂囦欢鐩綍鏄惁姝g‘ -[v] Do release files have the word incubating in their name? -[v] Are the digital signature and hashes correct? <-- 绛惧悕銆乭ash鏄惁姝g‘ -[v] Do LICENSE and NOTICE files exists? -[v] Is the LICENSE and NOTICE text correct? <-- 鍗忚鏂囨湰鏄惁姝g‘ -[v] Is the NOTICE year correct? <-- 娉ㄦ剰骞翠唤鏄惁姝g‘ -[v] Un-included software dependencies are not mentioned in LICENSE or NOTICE? <-- 娌℃湁鍖呭惈鍗忚鎴栨敞鎰忔病鏈夋彁鍒扮殑杞欢渚濊禆 -[v] License information is not mentioned in NOTICE? <-- 鍗忚淇℃伅娌℃湁鍦ㄦ敞鎰忎腑鎻愬強 -[x] Is there any 3rd party code contained inside the release? If so: <-- 鏄惁鍖呭惈绗笁鏂逛唬鐮� - [ ] Does the software have a compatible license? - [ ] Are all software licenses mentioned in LICENSE? - [ ] Is the full text of the licenses (or pointers to it) in LICENSE? - Is any of this code Apache licensed? Do they have NOTICE files? If so: - [ ] Have relevant parts of those NOTICE files been added to this NOTICE file? -[v] Do all source files have ASF headers? <-- 鏄惁鎵€鏈夋簮鐮侀兘鏈堿SF澶撮儴 -[v] Do the contents of the release match with what's tagged in version control? <-- 鍙戝竷鐨勬枃浠舵槸鍚﹀拰github涓璽ag鏍囪鐨勭増鏈竴鑷� -[x] Are there any unexpected binary files in the release? <-- 鏄惁鍖呭惈涓嶅簲璇ュ瓨鍦ㄧ殑浜岃繘鍒舵枃浠� -[v] Can you compile from source? Are the instruction clear? <-- 鑳藉惁缂栬瘧锛熸寚浠ゆ槸鍚︽槑纭紵 - -On my mac laptop, I could compile successfully but there's one failed unit -test against net.go. I believe this issue [1] can be fixed with [2] in the -next release. <-- 缂栬瘧闂鍙婂缓璁� - -Is the issue minor? <-- 缂栬瘧瀛樺湪鐨勯棶棰樻槸鍚﹂兘鏄緝灏忕殑锛� -[v] Yes [ ] No [ ] Unsure - -Could it possibly be fixed in the next release? <-- 鑳藉惁鍦ㄤ笅涓€鐗堟湰淇锛� -[v] Yes [ ] No [ ] Unsure - -I vote with: <-- 鎴戠殑鎶曠エ -[v] +1 release the software -[ ] +0 not sure if it should be released -[ ] -1 don鈥檛 release the software because... - -Regards, --Ian. - -1. https://github.com/apache/dubbo-go/issues/207 -2. https://github.com/apache/dubbo-go/pull/209 -``` - -鑼冧緥3锛� -``` -+1 - -I checked the following items: - -[鈭歖 Do LICENSE and NOTICE files exists? -[鈭歖 Is the LICENSE and NOTICE text correct? -[鈭歖 Is the NOTICE year correct? -[鈭歖 Do all source files have ASF headers? -[鈭歖 Do the contents of the release match with what's tagged in version control? -[鈭歖 Can you compile from source? -I could compile successfully but there's failed units test. I run the unit -test refer to :https://github.com/apache/dubbo-go#running-unit-tests . -But I think it is not matter, the test can be fixed in next release. - - -I vote with: -[鈭歖 +1 release the software -``` - -鑼冧緥4: -``` -Great improvement over the previous release but there are still issues from the last vote that have not been resolved. e.g. [6][7][8] - -Can someone tell me if these files [1][2][3][4][5] are just missing ASF headers or have a different license? - -If they are just missing headers and [6][7][8] explained then it +1 form me, otherwise it鈥檚 probably a -1. - -Can people please carefully check the contents, and write down what you checked, rather than just saying +1. - -I checked: -- signatures and hashes good -- LICENSE is missing the appendix (not a major issue) -- LICENSE may be is missing some information[1][2][3][4][5] -- NOTICE is fine -- No binaries in source release -- Some files are missing ASF headers or other license headers [1][2][3][4][5] - please fix - -Thanks, -Justin - -1. dubbo-go-1.1.0/cluster/loadbalance/round_robin_test.go -2. dubbo-go-1.1.0/common/extension/router_factory.go -3. dubbo-go-1.1.0/config_center/configuration_parser.go -4. dubbo-go-1.1.0/config_center/configuration_parser_test.go -5. dubbo-go-1.1.0/registry/zookeeper/listener_test.go -6. dubbo-go-1.1.0/cluster/loadbalance/least_active.go -7. dubbo-go-1.1.0/protocol/RpcStatus.go -8. dubbo-go-1.1.0/filter/impl/active_filter.go -``` - - -### 8.3. 鍙� [RESULT] [VOTE] 鎶曠エ缁撴灉閫氱煡閭欢 - -- TO: dev@dubbo.apache.org -- Title: [RESULT] [VOTE]: Release Apache dubbo-go-hessian2 v1.4.0 RC1 - - -``` -Hello Dubbo/Dubbogo Community, - -The release dubbo-go-hessian2 v1.4.0 RC1 vote finished, We鈥檝e received 3 +1 (binding) votes. - -+1 binding, Stocks Alex -+1 binding, Ian Luo -+1 binding, Jun Liu - -The vote and result thread: -https://lists.apache.org/thread.html/r8070f3b00984888069dd4ddad1bbc424cde51ea68b6ff0520e609e18%40%3Cdev.dubbo.apache.org%3E - - -The vote passed. Thanks all. -I will proceed with the formal release later. - - -Best regards, - -The Apache Dubbogo Team -``` - - -### 8.4. 鍙� Announce 鍙戠増閭欢 - -- TO: dev@dubbo.apache.org -- [ANNOUNCE] Apache Dubbo version 2.7.4 Released - -``` -Hello Community, - -The Apache Dubbo team is pleased to announce that the 2.7.4 has been -released. - -Apache Dubbo鈩� is a high-performance, java based, open source -RPC framework. Dubbo offers three key functionalities, which include -interface based remote call, fault tolerance & load balancing, and -automatic service registration & discovery. - -Both the source release[1] and the maven binary release[2] are available -now, you can also find the detailed release notes in here[3]. - - -If you have any usage questions, or have problems when upgrading or find -any problems about enhancements included in this release, please don鈥檛 -hesitate to let us know by sending feedback to this mailing list or filing -an issue on GitHub[4]. - - - -[1] http://dubbo.apache.org/en-us/blog/download.html -[2] http://central.maven.org/maven2/org/apache/dubbo -[3] https://github.com/apache/dubbo/releases -[4] https://github.com/apache/dubbo/issues -``` - -## 9. 鍙傝€� - -- dubbo鍙戝竷娴佺▼: http://dubbo.apache.org/zh-cn/docs/developers/committer-guide/release-guide_dev.html -- doris鍙戝竷娴佺▼: https://github.com/apache/incubator-doris/blob/master/docs/documentation/cn/community/release-process.md -- spark鍙戝竷娴佺▼: http://spark0apache0org.icopy.site/release-process.html - - diff --git a/doc/apache/release_note.md b/doc/apache/release_note.md deleted file mode 100644 index 747a3348a1324cc059906fae16cb432b3bc6188d..0000000000000000000000000000000000000000 --- a/doc/apache/release_note.md +++ /dev/null @@ -1,11 +0,0 @@ -### How to release a new version? ---- - -* 1 Check the time range of NOTICE; -* 2 Add the features to the feature list of README.md/README_CN.md/CHANGE.md; -* 3 Check whether every code file has the Apache License 2.0 or not; -* 4 There should not be author info(name & email etc) exist in code file; -* 5 Run all unit tests; -* 6 Run all samples in apache/dubbo-samples/golang; -* 7 Write "What's New" by releaser who should be an apache/dubbo-go committer; -* 8 And then, u can release a new version refer to [Apache 杞欢鍙戠増娴佺▼](./apache-release-procedure-20200306.md); \ No newline at end of file diff --git a/doc/md/arch/dubbo-go-design-implement-and-featrues.md b/doc/md/arch/dubbo-go-design-implement-and-featrues.md deleted file mode 100644 index c0600ef21fb578225646c9acc94a63d109494ee1..0000000000000000000000000000000000000000 --- a/doc/md/arch/dubbo-go-design-implement-and-featrues.md +++ /dev/null @@ -1,129 +0,0 @@ -# [dubbo-go 鐨勫紑鍙戙€佽璁′笌鍔熻兘浠嬬粛](https://www.infoq.cn/article/7JIDIi7pfwDDk47EpaXZ) - -## dubbo-go 鐨勫墠涓栦粖鐢� - - - -dubbo-go 鏄洰鍓� Dubbo 澶氳瑷€鐢熸€佹渶鐏儹鐨勯」鐩€俤ubbo-go 鏈€鏃╃殑鐗堟湰搴旇瑕佽拷婧埌 2016 骞达紝鐢辩ぞ鍖轰簬闆ㄥ悓瀛︾紪鍐� dubbo-go 鐨勫垵鐗堛€傚綋鏃跺緢澶氫笢瑗挎病鏈夌幇鎴愮殑杞瓙锛屽 Go 璇█娌℃湁鍍� netty 涓€鏍风殑鍩轰簬浜嬩欢鐨勭綉缁滃鐞嗗紩鎿庛€� hessian2 鍗忚娌℃湁 Go 璇█鐗堟湰瀹炵幇锛屽姞涓婂綋鏃� Dubbo 涔熸病鏈夊紑濮嬮噸鏂扮淮鎶ゃ€傛墍浠ヤ粠鍗忚搴撳埌缃戠粶寮曟搸锛屽啀鍒颁笂灞� dubbo-go 锛屽叾瀹為兘鏄粠闆跺紑濮嬪啓鐨勩€� - -鍦� 2018 骞达紝鎼虹▼寮€濮嬪仛 Go 璇█鐨勪竴浜涗腑闂翠欢浠ユ惌寤哄唴閮ㄧ殑 Go 璇█鐢熸€侊紝闇€瑕佹湁涓€涓� Go 鐨勬湇鍔℃鏋跺彲浠ヤ笌鎼虹▼鐨勭幇鏈� dubbo soa 鐢熸€佷簰閫氥€傛墍浠ョ敱鎴戣礋璐i噸鏋勪簡 dubbo锛峠o 骞跺紑婧愬嚭杩欎釜鐗堟湰銆傚綋鏃惰皟鐮斾簡寰堝寮€婧愮殑 Go 璇█鏈嶅姟妗嗘灦锛屽綋鏃惰兘澶熸敮鎸� hessian2 鍗忚鐨勫苟璺� Dubbo 鍙互鎵撻€氱殑浠呮壘鍒颁簡褰撴椂浜庨洦鍐欑殑 dubbo-go 鏃╂湡鐗堟湰銆傜敱浜庢惡绋嬪绀惧尯鐗堟湰鐨� Dubbo 鍋氫簡鎸哄鐨勬墿灞曪紝婧愪簬瀵规墿灞曟€х殑闇€姹傛垜浠� Go 璇█鐗堟湰闇€瑕佷竴涓洿鏄撲簬鎵╁睍鐨勭増鏈紝鍔犱笂褰撴椂杩欎釜鐗堟湰鏈韩鐨勫姛鑳戒篃姣旇緝绠€鍗曪紝鎵€浠ユ垜浠壘鍒颁簡浣滆€呭悎浣滈噸鏋勪簡涓€涓洿濂界殑鐗堟湰銆傜粡杩囦簡澶у崐骞存椂闂达紝鍦ㄤ笂鍥剧涓夐樁娈� 19 骞� 6 鏈堢殑鏃跺€欙紝鍩烘湰涓婂凡缁忔妸 dubbo-go 閲嶆瀯浜嗕竴閬嶏紝鎬讳綋鐨勬€濊矾鏄弬鑰冪殑 Dubbo 鏁翠綋鐨勪唬鐮佹灦鏋勶紝鐢� Go 璇█瀹屽叏閲嶅啓浜嗕竴涓畬鏁寸殑鍏峰鏈嶅姟绔窡娑堣垂绔殑 Golang rpc/ 寰湇鍔℃鏋躲€� - -鍚庢潵鎴戜滑灏嗛噸鏋勫悗鐨勭増鏈� dubbo-go 1.0 璐$尞缁� Apache 鍩洪噾浼氾紝鍒扮幇鍦ㄥ凡缁忚繃鍘讳簡涓や釜澶氭湀鐨勬椂闂达紝杩戞湡绀惧尯鍙戝竷浜� 1.1 鐗堟湰銆傜洰鍓嶄负姝紝宸茬粡鏈夊寘鎷惡绋嬪湪鍐呯殑鍏徃宸茬粡鍦ㄧ敓浜х幆澧冨紑濮嬩簡璇曠敤鍜屾帹骞裤€� - -## Start dubbo-go - -鐜板湪鐨� dubbo-go 宸茬粡鑳藉璺� Java 鐗堟湰鍋氭瘮杈冨ソ鐨勮瀺鍚堜簰閫氾紝鍚屾椂 dubbo-go 鑷韩涔熸槸涓€涓畬鎴愮殑 Go 璇█ rpc/ 寰湇鍔℃鏋讹紝瀹冧篃鍙互鑴辩 java dubbo 鏉ョ嫭绔嬩娇鐢ㄣ€� - -杩欒竟绠€鍗曚粙缁嶄竴涓嬬敤娉曪紝鍐欎竴涓� hello world 鐨勪緥瀛愩€� - - - -涓婂浘鏄竴涓畝鍗曠殑 java service 锛屾敞鍐屼负涓€涓� Dubbo 鏈嶅姟锛屾槸涓€涓畝鍗曠殑鑾峰彇鐢ㄦ埛淇℃伅鐨勪緥瀛愩€� - - - -涓婂浘鏄� dubbo-go 鐨勫鎴风锛屾潵璁㈤槄鍜岃皟鐢ㄨ繖涓� Java 鐨� Dubbo 鏈嶅姟銆侴o 璇█瀹㈡埛绔渶瑕佹樉寮忚皟鐢� SetConsumerService 鏉ユ敞鍐岄渶瑕佽闃呯殑鏈嶅姟锛岀劧鍚庨€氳繃璋冪敤 dubbo-go-hessian2 搴撶殑 registerPOJO 鏂规硶鏉ユ敞鍐� user 瀵硅薄锛屽仛 Java 鍜� Go 璇█涔嬮棿鐨勮嚜瀹氫箟 pojo 绫诲瀷杞崲銆傚叿浣撶殑鏈嶅姟璋冪敤鏂规硶灏辨槸澹版槑涓€涓殑 GetUser 闂寘锛屼究鍙洿鎺ヨ皟鐢ㄣ€� - - - -涓婂浘锛屽悓鏍风殑鍙互鍩轰簬 dubbo-go 鍙戝竷涓€涓� GetUser 鐨勬湇鍔$锛屼娇鐢ㄦ柟寮忕被浼硷紝鍙戝竷瀹屽悗鍙互琚� dubbo java 鐨勫鎴风璋冪敤銆� - - - -濡備笂鍥炬墍绀猴紝鐜板湪宸茬粡鍋氬埌浜嗚繖鏍蜂竴涓▼搴︼紝鍚屾牱涓€浠� dubbo-go 瀹㈡埛绔唬鐮侊紝鍙互鍘昏皟鐢� dubbo-go 鐨勬湇鍔$锛屼篃鍙互鍘昏皟鐢� Dubbo Java 鐨勬湇鍔$锛涘悓鏍蜂竴浠� dubbo-go 鐨勬湇鍔$浠g爜锛屽彲浠ヨ dubbo-go 瀹㈡埛绔拰 Java 瀹㈡埛绔皟鐢紝鎵€浠ュ熀鏈笂浣跨敤 Dubbo 浣滀负 PPC 妗嗘灦鐨� Go 璇█搴旂敤璺� Java 搴旂敤鏄病鏈変粈涔堥樆纰嶇殑锛屾槸瀹屽叏鐨勮法璇█ RPC 璋冪敤銆傛洿閲嶈鐨勬槸 dubbo-go 缁ф壙浜� Dubbo 鐨勮澶氫紭鐐癸紝濡傛槗浜庢墿灞曘€佹湇鍔℃不鐞嗗姛鑳藉己澶э紝澶у鍦ㄧ敤 Go 璇█寮€鍙戝簲鐢ㄧ殑杩囩▼涓紝濡傛灉涔熼亣鍒扮被浼奸渶瑕佷笌 Dubbo Java 鎵撻€氱殑闇€姹傦紝鎴栬€呴渶瑕佹壘涓€涓湇鍔℃不鐞嗗姛鑳藉畬澶囩殑 Go 寰湇鍔℃鏋讹紝鍙互鐪嬩笅鎴戜滑 dubbo-go 椤圭洰銆� - -## dubbo-go 鐨勭粍鎴愰」鐩� - -涓嬮潰浠嬬粛涓€涓� dubbo-go 鐨勭粍鎴愰」鐩紝涓轰簡鏂逛究鍙互琚叾浠栭」鐩洿鎺ュ鐢紝 dubbo-go 鎷嗗垎鎴愪簡澶氫釜椤圭洰锛屽苟鍏ㄩ儴浠� Apache 鍗忚寮€婧愩€� - -**apache/dubbo-go** - -dubbo-go 涓婚」鐩紝 Dubbo 鏈嶅姟绔€佸鎴风瀹屾暣 Go 璇█瀹炵幇銆� - -**apache/dubbo-go-hession2** - -鐩墠搴旂敤鏈€骞挎硾锛屼笌 Java 鐗堟湰鍏煎绋嬪害鏈€楂樼殑 hessian2 鍗忚 Go 璇█瀹炵幇锛屽凡缁忚澶氫釜 GolangRPC & Service Mesh 椤圭洰浣跨敤銆� - -**dubbo-go/getty** - -dubbo-go 寮傛缃戠粶 I/O 搴擄紝灏嗙綉缁滃鐞嗗眰瑙h€︺€� - -**dubbo-go/gost** - -鍩烘湰绫诲簱锛屽畾涔変簡 timeWheel銆乭ashSet銆乼askPool 绛夈€� - -**dubbo-go/dubbo-go-benchmark** - -鐢ㄤ簬瀵� dubbo-go 杩涜绠€鍗曠殑鍘嬪姏娴嬭瘯锛屾€ц兘娴嬭瘯銆� - -**apache/dubbo-go-hessian2** - - - -鍏堢畝鍗曚粙缁嶄竴涓� dubbo-go-hessian2 椤圭洰銆傝椤圭洰灏辨槸 hessian2 鍗忚鐨� Go 璇█瀹炵幇锛屾渶鍩烘湰鐨勫彲浠ュ皢 Java 鐨勫熀鏈暟鎹被鍨嬪拰澶嶆潅鏁版嵁绫诲瀷锛堝涓€浜涘寘瑁呯被鍜� list 鎺ュ彛瀹炵幇绫伙級涓� golang 杩欒竟瀵瑰簲銆� - -璇︽儏鍙互鍙傝€冿細 [https://github.com/hessian-group/hessian-type-mapping](https://github.com/hessian-group/hessian-type-mapping) - -鍙﹀ Dubbo Java 鏈嶅姟绔彲浠ヤ笉鎹曡幏寮傚父锛屽皢寮傚父绫婚€氳繃 hession2 鍗忚搴忓垪鍖栭€氳繃缃戠粶浼犺緭缁欐秷璐圭锛屾秷璐圭杩涜鍙嶅簭鍒楀寲瀵硅寮傚父瀵硅薄骞惰繘琛屾崟鑾枫€傛垜浠粡杩囦竴娈垫椂闂寸殑鏁寸悊锛岀洰鍓嶅凡缁忔敮鎸佸湪 Go 娑堣垂绔畾涔夊搴� Java 鐨勮秴杩� 40 绉� exception 绫伙紝鏉ュ疄鐜板 Java 寮傚父鐨勬崟鑾凤紝鍗充娇鐢� dubbo-go 涔熷彲浠ュ仛鍒扮洿鎺ユ崟鑾� Java 鏈嶅姟绔姏鍑虹殑寮傚父銆� - -鍙﹀瀵逛簬 Java 绔� BigDecimal 楂樼簿搴﹁绠楃被鐨勬敮鎸併€傛秹鍙婂埌涓€浜涢噾铻嶇浉鍏崇殑璁$畻浼氭湁绫讳技鐨勯渶姹傦紝鎵€浠ヤ篃瀵硅繖涓被杩涜浜嗘敮鎸併€� - -鍏朵粬鐨勶紝杩樻湁鏄犲皠 java 绔殑鏂规硶鍒悕锛屼富瑕佺殑鍘熷洜鏄� Go 杩欒竟璇█鐨勮绾︼紝闇€瑕佽搴忓垪鍖栫殑鏂规硶鍚嶅繀椤绘槸棣栧瓧姣嶅ぇ鍐欍€傝€� Java 杩欒竟娌℃湁杩欑瑙勮寖锛屾墍浠ユ垜浠姞浜嗕竴涓� hessian 鏍囩鐨勬敮鎸侊紝鍙互鍏佽鐢ㄦ埛鎵嬪姩鏄犲皠 Java 绔殑鏂规硶鍚嶇О銆� - -鍩烘湰涓婄幇鍦ㄧ殑 dubbo-go 宸茬粡婊¤冻缁濆ぇ澶氭暟涓� Java 鐨勭被鍨嬩簰閫氶渶姹傦紝鎴戜滑杩戞湡涔熷湪瀹炵幇瀵� Java 娉涘瀷鐨勬敮鎸併€� - -**dubbo-go/getty** - - - -Go 璇█澶╃敓灏辨槸涓€涓紓姝ョ綉缁� I/O 妯″瀷锛屽湪 linux 涓� Go 璇█鍐欑殑缃戠粶鏈嶅姟鍣ㄤ篃鏄噰鐢ㄧ殑 epoll 浣滀负鏈€搴曞眰鐨勬暟鎹敹鍙戦┍鍔�, 杩欒窡 java 鍦� linux 鐨� nio 瀹炵幇鏄竴鏍风殑銆傛墍浠� Go 璇█鐨勭綉缁滃鐞嗗ぉ鐢熷氨鏄紓姝ョ殑銆傛垜浠渶瑕佸皝瑁呯殑鍏跺疄鏄熀浜� Go 鐨勫紓姝ョ綉缁滆鍐欎互鍙婁箣鍚庣殑澶勭悊涓棿灞傘€俫etty 灏嗙綉缁滄暟鎹鐞嗗垎涓轰笁灞傦紝鍏ュ悜鏂瑰悜鍒嗗埆缁忚繃瀵圭綉缁� i/o 灏佽鐨� streaming 灞傘€佹牴鎹笉鍚屽崗璁鏁版嵁杩涜搴忓垪鍖栧弽搴忓垪鍖栫殑 codec 灞傦紝浠ュ強鏈€鍚庢暟鎹笂鍗囧埌闇€瑕佷笂灞傛秷璐圭殑 handler 灞傘€傚嚭鍚戞柟鍚戝熀鏈笌鍏ュ悜缁忚繃鐨勭浉鍙嶃€傛瘡涓摼鎺ョ殑 IO 鍗忕▼鏄垚瀵瑰嚭鐜扮殑锛屾瘮濡傝鍗忕▼璐熻矗璇诲彇銆� codec 閫昏緫鐒跺悗鏁版嵁鍒� listener 灞傦紝鐒跺悗鏈€鍚庣殑浜嬩欢鐢变笟鍔″崗绋嬫睜鏉ュ鐞嗐€� - -璇ラ」鐩洰鍓嶆槸涓� dubbo-go 瑙h€﹀嚭鏉ョ殑锛屾墍浠ュぇ瀹跺鏋滄湁绫讳技闇€姹傚彲浠ョ洿鎺ユ嬁鏉ョ敤锛岀洰鍓嶅凡缁忔湁瀵逛簬 tcp/udp/websocket 鐨勬敮鎸併€� - -**Apache / dubbo-go** - - - -dubbo-go 涓婚」鐩紝鎴戜滑閲嶆瀯鐨勮繖涓€鐗堜富瑕佹槸鍩轰簬 Dubbo 鐨勫垎灞備唬鐮佽璁★紝涓婂浘鏄� dubbo-go 鐨勪唬鐮佸垎灞傘€傚熀鏈笂涓� Java 鐗堟湰 Dubbo 鐜版湁鐨勫垎灞備竴鑷达紝鎵€浠� dubbo锛峠o 涔熺户鎵夸簡 Dubbo 鐨勪竴浜涗紭鑹壒鎬э紝姣斿鏁存磥鐨勪唬鐮佹灦鏋勩€佹槗浜庢墿灞曘€佸畬鍠勭殑鏈嶅姟娌荤悊鍔熻兘銆� - -鎴戜滑鎼虹▼杩欒竟锛屼娇鐢ㄧ殑鏄嚜宸辩殑娉ㄥ唽涓績锛屽彲浠ュ湪 dubbo-go 鎵╁睍鏈哄埗鐨勫熀纭€涓婄伒娲绘墿灞曡€屾棤闇€鍘绘敼鍔� dubbo-go 鐨勬簮浠g爜銆� - -## dubbo-go 鐨勫姛鑳戒粙缁� - -**dubbo-go 宸插疄鐜板姛鑳�** - -鐩墠 dubbo-go 宸茬粡瀹炵幇浜� Dubbo 鐨勫父鐢ㄥ姛鑳斤紙濡傝礋璐e潎琛°€侀泦缇ょ瓥鐣ャ€佹湇鍔″鐗堟湰澶氬疄鐜般€佹湇鍔″娉ㄥ唽涓績澶氬崗璁彂甯冦€佹硾鍖栬皟鐢ㄣ€佹湇鍔¢檷绾х啍鏂瓑锛夛紝鍏朵腑鏈嶅姟娉ㄥ唽鍙戠幇宸茬粡鏀寔 zookeeper/etcd/consul/nacos 涓绘祦娉ㄥ唽涓績銆傝繖閲屼笉灞曞紑璇︾粏浠嬬粛锛岀洰鍓� dubbo-go 鏀寔鐨勫姛鑳藉彲浠ユ煡鐪嬮」鐩� readme 涓殑 feature list 锛岃鎯呭弬鑰冿細 [https://github.com/apache/dubbo-go#feature-list](https://github.com/apache/dubbo-go#feature-list) - -鐩墠绀惧尯姝e湪寮€鍙戜腑鐨勫姛鑳斤紝涓昏鏄棭鏈熺敤鎴蜂娇鐢ㄨ繃绋嬩腑鎻愬嚭鐨勪竴浜涢渶姹傦紝涔熸槸鐢熶骇钀藉湴涓€浜涘繀闇€鐨勯渶姹傦紝濡傜洃鎺с€佽皟鐢ㄩ摼璺熻釜浠ュ強鏈嶅姟璺敱銆佸姩鎬侀厤缃腑蹇冪瓑鏇撮珮绾х殑鏈嶅姟娌荤悊闇€姹傘€� - -**dubbo-go 鍔熻兘浠嬬粛涔嬫硾鍖栬皟鐢�** - - - -杩欓噷璇︾粏鍋氬嚑涓噸鐐瑰姛鑳界殑浠嬬粛銆傞鍏堟槸娉涘寲璋冪敤锛屽涓婂浘锛岃繖涓篃鏄ぞ鍖哄悓瀛︽彁鐨勯渶姹傘€傝鍚屽鍏徃鍐呴儴鏈夊緢澶� Dubbo 鏈嶅姟锛屼粬浠敤 Go 鍋氫簡涓€涓� api gateway 缃戝叧锛屾兂瑕佹妸 Dubbo 鏈嶅姟鏆撮湶鎴愬缃� http 鎺ュ彛銆傚洜涓哄唴閮ㄧ殑 Dubbo 鏈嶅姟姣旇緝澶氾紝涓嶅彲鑳芥瘡涓€涓� Dubbo 鏈嶅姟閮藉幓鍋氫竴涓秷璐圭鎺ュ彛鍘诲仛閫傞厤锛岃繖鏍风殑璇濅竴鏃︽湇鍔$鏀瑰姩锛屽鎴风涔熻鏀广€傛墍浠ヤ粬杩欒竟鐨勬€濊矾鏄仛鍩轰簬 dubbo-go 鍋氭硾鍖栬皟鐢紝 api-gateway 瑙f瀽鍑哄缃戣姹傜殑鍦板潃锛岃В鏋愬嚭鎯宠璋冪敤鐨� Dubbo 鏈嶅姟鐨勭洰鏍囥€傚熀浜� dubbo-go consumer 娉涘寲璋冪敤鎸囧畾 service銆乵ethod 锛屼互鍙婅皟鐢ㄥ弬鏁般€� - -鍏蜂綋鐨勫師鐞嗘槸锛� dubbo-go 杩欒竟浣滀负娑堣垂绔紝瀹為檯浼氶€氳繃鏈湴 genericService.invoke 鏂规硶鍋氫唬鐞嗭紝鍙傛暟閲岄潰鍖呭惈浜� service name锛宮ethod name 锛岃繕鍖呭惈琚皟鐢ㄧ洰鏍� service 闇€瑕佺殑鍙傛暟绫诲瀷銆佸€肩瓑鏁版嵁锛岃繖浜涙暟鎹悗闈細閫氳繃 dubbo-go-hession2 鍋氳浆鎹紝浼氬皢鍐呭杞寲鎴� map 绫诲瀷锛岀粡杩囩綉缁滃彂閫佸埌瀵瑰簲鐨� Java 鏈嶅姟绔紝鐒跺悗 Java 閭h竟鏄帴鏀剁殑 map 绫诲瀷鐨勫弬鏁帮紝浼氳嚜鍔ㄥ弽搴忓垪鍖栨垚鑷繁鐨� pojo 绫诲瀷銆傝繖鏍峰氨瀹炵幇浜� dubbo-go 浣滀负瀹㈡埛绔紝娉涘寲璋冪敤 Dubbo 鏈嶅姟绔殑鐩殑銆� - -**dubbo-go 鍔熻兘浠嬬粛涔嬮檷绾х啍鏂�** - - - -闄嶇骇鐔旀柇杩欒竟鏄熀浜庣殑鏄ぇ瀹舵瘮杈冪啛鎮夌殑 hystrix 鐨� Go 璇█鐗堟湰锛屽熀浜� hystrix 锛岀敤鎴峰彲浠ュ畾涔夌啍鏂鍒欏拰闄嶇骇瑙﹀彂鐨勪唬鐮佹銆傞檷绾х啍鏂敮鎸佹槸浣滀负涓€涓嫭绔嬬殑 dubbo-go filter 锛屽彲浠ョ伒娲婚€夋嫨鏄惁鍚敤锛屽鏋滀笉鍚敤灏卞彲浠ュ湪鎵撳寘鐨勬椂鍊欎笉灏嗕緷璧栧紩鍏ャ€侳ilter 灞傛槸 dubbo-go 涓浜庤姹傞摼璺殑涓€涓矗浠婚摼妯″紡鎶借薄锛岀洰鍓嶆湁璁稿鍔熻兘閮芥槸鍩轰簬鍔ㄦ€佹墿灞� filter 閾炬潵瀹炵幇鐨勶紝鍖呮嫭 trace銆乴eastactive load balacne銆乴og 绛夈€傞檷绾х啍鏂璁℃垚涓€涓湇鍔¤皟鐢ㄧ鐙珛鐨� filter 鍙互鐏垫椿婊¤冻璋冪敤绔瑙掑浜庡井鏈嶅姟鏋舵瀯涓€滈槻闆穿鈥滅殑鏈嶅姟娌荤悊闇€姹傘€� - -**dubbo-go 鍔熻兘浠嬬粛涔嬪姩鎬侀厤缃�** - -鍏充簬鍔ㄦ€侀厤缃腑蹇冿紝 Dubbo 鐨� 2.6 鍒� 2.7 鐗堟湰鍋氫簡涓€涓瘮杈冨ぇ鐨勫彉鍖栵紝浠庝箣鍓嶇殑 url 閰嶇疆褰㈠紡杩囨浮鍒颁簡鏀寔閰嶇疆涓績 yaml 鏍煎紡閰嶇疆鐨勫舰寮忥紝娌荤悊绮掑害涔熶粠鍗曟湇鍔$骇鍒殑閰嶇疆鏀寔鍒颁簡搴旂敤绾у埆鐨勯厤缃紝涓嶈繃鍦� 2.7 鐗堟湰涓繕鏄吋瀹� 2.6 鐗堟湰 url 褰㈠紡杩涜鏈嶅姟閰嶇疆鐨勩€俤ubbo-go 杩欒竟鑰冭檻鍒拌窡 Dubbo2.6 鍜� 2.7 鐨勪簰閫氭€э紝鍚屾牱鏀寔 url 鍜岄厤缃枃浠舵柟寮忕殑鏈嶅姟閰嶇疆锛屽悓鏃跺吋瀹瑰簲鐢ㄧ骇鍒拰鏈嶅姟绾у埆鐨勯厤缃紝璺� dubbo 淇濇寔涓€鑷达紝鐩墠宸茬粡瀹炵幇浜� zookeeper 鍜� apollo 浣滀负閰嶇疆涓績鐨勬敮鎸併€� - -## dubbo-go roadmap 2019-2020 - - - -鏈€鍚庢槸澶у姣旇緝鍏虫敞鐨勶紝绀惧尯鍏充簬 dubbo-go 2019 骞翠笅鍗婂勾鐨勮鍒掞紝鐩墠鏉ョ湅涓昏杩樻槸鐜版湁鍔熻兘鐨勮ˉ榻愬拰涓€浜涢棶棰樼殑淇锛屾垜浠殑鐩爣灏辨槸棣栧厛鍋氬埌 Java 鍜� Go 鍦ㄨ繍琛屾椂鐨勫吋瀹逛簰閫氬拰鍔熻兘鐨勪竴鑷达紝鍏舵鏄煡婕忚ˉ缂� dubbo-go 浣滀负涓€涓畬鏁� Go 璇█寰湇鍔℃鏋跺湪鍔熻兘涓婄殑鍙互鏀硅繘涔嬪銆� - -鍙﹀鍊煎緱鍏虫敞鐨勪竴鐐规槸锛岄璁′粖骞村勾搴曪紝 dubbo-go 浼氬彂甯冧竴涓敮鎸� kubernetes 浣滀负娉ㄥ唽涓績鐨勬墿灞曪紝绉瀬鎷ユ姳浜戝師鐢熺敓鎬併€傚叧浜庝簯鍘熺敓鐨勬敮鎸侊紝绀惧尯鍓嶆湡鍋氫簡绉瀬鐨勫伐浣滐紝鍖呮嫭璁ㄨ鍏充簬 dubbo-go 涓� Service Mesh 鐨勫叧绯讳互鍙婂湪鍏朵腑鐨勫畾浣嶏紝鍙互鑲畾鐨勬槸锛� dubbo-go 灏嗕細閰嶅悎 Dubbo 绀惧尯鍦� Service Mesh 鏂瑰悜鐨勮鍒掑苟鎵紨閲嶈瑙掕壊锛屾垜浠垵姝ラ璁′細鍦ㄦ槑骞寸粰鍑轰笌 Service Mesh 寮€婧愮ぞ鍖洪」鐩泦鎴愮殑鏂规锛岃澶у鏈熷緟銆� - -dubbo-go 绀惧尯鐩墠灞炰簬蹇€熷仴搴锋垚闀跨姸鎬侊紝浠庢崘璧犵粰 Apache 鍚庣殑涓嶅埌 3 涓湀鐨勬椂闂撮噷锛屽惛寮曚簡澶ф壒閲忕殑娲昏穬寮€鍙戣€呭拰鎰熷叴瓒g殑鐢ㄦ埛锛屾杩庡悇浣嶅悓閬撳湪浣跨敤鎴栬€呭涔犱腑閬囧埌闂鑳藉鏉ョぞ鍖鸿璁烘垨鑰呯粰浜堟寚姝o紝涔熸杩庡 dubbo-go 鏈夋綔鍦ㄩ渶姹傛垨鑰呭 dubbo-go 鎰熷叴瓒g殑鍚岄亾鑳藉姞鍏ュ埌绀惧尯涓€� - -**浣滆€呬粙缁�**锛� - -浣曢懌閾紝鐩墠灏辫亴浜庢惡绋嬶紝鍩虹涓彴鐮斿彂閮ㄦ妧鏈笓瀹讹紝dubbo-go 鍏卞悓鍙戣捣浜恒€佷富瑕佷綔鑰咃紝Apache Dubbo committer锛屽叧娉ㄤ簰鑱旂綉涓彴浠ュ強涓棿浠堕鍩熴€� \ No newline at end of file diff --git a/doc/md/arch/dubbo-go-one-year.md b/doc/md/arch/dubbo-go-one-year.md deleted file mode 100644 index 0eb1008ee7ff7dc8f57693b5eb9cf786039dc06f..0000000000000000000000000000000000000000 --- a/doc/md/arch/dubbo-go-one-year.md +++ /dev/null @@ -1,216 +0,0 @@ -# [Go 鐗堟湰鍏� Dubbo 鐢熸€佷竴鍛ㄥ勾锛氬凡鍜� Spring Cloud銆乬RPC 浜掗€歖(https://www.oschina.net/question/4489239_2316774) - -鍘诲勾 5 鏈堬紝闃块噷寮€婧愮殑楂樻€ц兘 RPC 妗嗘灦 Dubbo 浠� ASF 姣曚笟骞舵檵鍗囬《绾ч」鐩紝鍚屾椂锛岃繕瀹e竷 Go 璇█鐗堟湰鐨� Dubbo-go 姝e紡鍔犲叆 Dubbo 瀹樻柟鐢熸€併€� - -缁忚繃涓€骞寸殑鍙戝睍锛� Dubbo-go 鍦ㄦ妧鏈拰绀惧尯杩愯惀鏂归潰閮藉凡缁忔湁浜嗕笉閿欑殑鎴愮哗銆侱ubbo-go 鏄� Dubbo 鐨勫畬鏁� Go 璇█瀹炵幇锛屽湪鍔熻兘瀹炵幇鍜屾妧鏈矾寰勪笂涓� Dubbo 鏈変笉鍚岀▼搴︾殑瀵规爣锛岄」鐩洟闃熼璁″緢蹇究鍙互杩藉钩 Java 鐗堢殑鍔熻兘銆傚綋鐒讹紝涔熸槸鍥犱负鍩轰簬 Go 璇█寮€鍙戯紝Dubbo-go 鏇存槗涓婃墜锛屾湭鏉ユ垨灏嗗弽鍝� Dubbo 鐨勪簯鍘熺敓鍖栥€� - -Dubbo-go 杩戞湡杩樺疄鐜颁簡 REST 鍗忚浠ュ強 gRPC 鐨勬敮鎸侊紝鎵撻€氫簡 Spring Cloud 鍜� gRPC 鐢熸€侊紝鍐嶅姞涓婁笌 Java Dubbo 鐨勪簰閫氾紝搴旂敤鍦烘櫙骞挎硾銆傚洜姝わ紝瀹冭鍏跺紑鍙戣€呭彨鍋氣€渁ll-in-one鈥濈殑 RPC 妗嗘灦銆� - -鐩墠 Dubbo 瀹樻柟宸茬粡鎶曞叆浜哄姏鍙備笌 Dubbo-go 鐨勫紑鍙戯紝闃块噷闆嗗洟浠婂勾瀹屾垚 HSF 鍜� Dubbo 鐨勮瀺鍚堝悗锛屼細鍦ㄩ泦鍥㈠唴閫愭鎺ㄥ箍浣跨敤 Dubbo-go銆� - -寮€婧愪腑鍥介噰璁夸簡褰撳墠姝e湪寮€鍙戜腑鐨� v1.5 鐗堟湰鐨勪富瑕佹帹杩涜€呴倱鏄庯紝鍥為【 Dubbo-go 鐨勮繃寰€锛屽挨鍏舵槸鏈€杩戜竴骞寸殑鍙戝睍鎯呭喌锛屽苟灞曟湜椤圭洰鏈潵鐨勫彂灞曘€� - -## Dubbo-go 杩囧幓鍙戝睍鍥為【 - -**OSCHINA锛�** -浣滀负椤圭洰涓昏鎺ㄥ姩鑰呬箣涓€锛屽彲浠ョ畝鍗曞洖椤句笅 Dubbo-go 鐨勫彂灞曞巻绋嬪悧锛� - -**Dubbo-go 閭撴槑锛�** - -棣栧厛锛屼釜浜轰唬琛ㄧぞ鍖猴紝鍊熷姪璐垫柟骞冲彴锛屾劅璋� Dubbo-go 鐨勪娇鐢ㄨ€呫€佹浘缁忓悎浣滆繃鐨勫悇涓獟浣撳钩鍙颁互鍙� Dubbo 瀹樻柟杩囧幓涓€骞存潵瀵规垜浠」鐩殑鍏虫敞锛孌ubbo-go 鐩墠鐨勫彂灞曠涓嶅紑鍚勬柟鍔涢噺鐨勫府鍔┿€� - -瀹為檯涓婏紝鍦� Dubbo-go 鍔犲叆 Dubbo 瀹樻柟鐢熸€佷箣鍓嶏紝宸茬粡鍙戝睍浜嗕袱骞淬€傚畠鏈€鏃╃敱鍏跺垱濮嬩汉浜庨洦鍦� 2016 骞� 5 鏈堟瀯寤猴紝鍚屽勾 9 鏈堝彂甯冨苟寮€婧愮殑銆傚涓嬫椂闂磋酱鍥炬竻鏅拌褰曚簡 Dubbo-go 鐨勫墠涓栦粖鐢熴€� - - - -**OSCHINA锛�** -鍦ㄥ幓骞撮」鐩垰鍔犲叆 Dubbo 瀹樻柟鐢熸€佺殑鏃跺€欙紝鏈夊紑鍙戝洟闃熸垚鍛樿锛孌ubbo-go 褰撴椂杩樻病鑳藉彂鎸ュ嚭 Go 璇█鐨勪紭鍔匡紝鍔熻兘瀹屾暣鎬ц繕瑕佸畬鍠勩€備綔涓轰竴涓负瑙e喅 Go 椤圭洰涓� Java & Dubbo 椤圭洰浜掗€氱殑椤圭洰锛岀粡杩囦竴骞寸殑鍙戝睍锛岄」鐩幇鍦ㄨ兘鍙戞尌鍑� Go 璇█鐨勪紭鍔夸簡鍚楋紝涓轰粈涔堬紵 - -**Dubbo-go 閭撴槑锛�** - -鍜屽幓骞存瘮璧锋潵锛屽湪鍙戞尌 Go 璇█鑷韩浼樺娍涓婏紝鏈変簡寰堝ぇ鐨勬彁楂樸€� - -Go 璇█鍗忕▼鐨勪釜鏁颁笂闄愭瘮 Java 绾跨▼鏁扮洰澶氥€侴o 璇█鐨勫崗绋嬪彧杩愯鍦ㄧ敤鎴锋€侊紝鍒濆鍫嗘爤灏忎笖鍙几缂╋紝鑰� Java 绾跨▼鍚姩鍥犵敤鎴锋€佺郴缁熸€佷箣闂村垏鎹㈠甫鏉ョ殑棰濆鎴愭湰琚嚎绋嬫睜鎶瑰钩锛屾墍浠ュ彧鏈夊湪杈冨ぇ骞跺彂闇€姹傜殑鍦烘櫙涓嬶紙鏍告暟闄愬埗鐨勬儏鍐典笅锛孞ava 绾跨▼姹犱腑鏈€澶х嚎绋嬫暟琚檺鍒讹級锛屾墠浼氬彂鎸ヤ紭鍔裤€侱ubbo 涓被浼肩殑鍦烘櫙锛氬紓姝ュ鐞嗙綉缁滃拰鍗忚鍖栫殑澶勭悊銆傛垜浠湪缃戠粶搴� Getty 涓姞鍏ヤ簡鍗忕▼姹狅紝瀹炵幇浜嗙綉缁滄敹鍙戝拰閫昏緫澶勭悊鐨勮В鑰︺€� - -鍙﹀锛孏o 璇█涓婃墜閫熷害纭疄姣� Java 蹇ソ鍑犱釜鏁伴噺绾э紝鍙鎼ソ鍏锋湁鑹ソ鎵╁睍鎬х殑鏋跺瓙锛岀ぞ鍖� contributor 鍩瑰吇鐨勬垚鏈瘮 Java 浣庡緢澶氥€傚緱鐩婁簬姝わ紝Dubbo-go 鐨勫姛鑳藉拰鎬ц兘灏嗗緢蹇拷骞� Java銆� - -\***\*OSCHINA锛�** -\*\*鍏充簬 Dubbo-go 鍦� Java 鍜� Go 杩愯鏃剁殑鍏煎浜掗€氬拰鍔熻兘涓€鑷寸洰鏍囷紝鐩墠杩涘睍濡備綍锛� - -**Dubbo-go 閭撴槑锛�** - -鐩墠锛孌ubbo-go 宸茬粡瀹屽叏瀵归綈 Dubbo v2.6.x锛屾鍦ㄥ叏鍔涘紑鍙� v1.5.0 鐗堟湰鍙互鍏ㄩ潰瀵归綈 v2.7.x銆� - -Dubbo v2.7.5 涔嬪悗寮€濮嬫敮鎸佸簲鐢ㄧ淮搴︾殑鏈嶅姟娉ㄥ唽锛岃繖涔熸槸 v1.5.0 璁″垝鏀寔鐨勬牳蹇冪壒鎬с€� - -鍙互鍓ч€忎竴涓嬶紝鐩墠 v1.5.0 鐗堟湰鐨� Dubbo-go 寮€鍙戝伐浣滃凡缁忚繘鍏ヤ簡灏惧0锛屾澶勪簬娴嬭瘯闃舵銆傜瓑 v1.5.0 鍙戝竷涔嬪悗锛屾垜浠細闄嗙画鍙戝竷鍑犱釜灏忕増鏈紝鐢ㄤ簬瀵归綈 Dubbo v2.7.5 涔嬪悗鐨勭増鏈€傚彲浠ヨ锛寁1.5.x 涓昏鏄负浜嗛厤鍚� dubbo 鐨勪簯鍘熺敓鍖栥€� - -\***\*OSCHINA锛�** -\*\*Dubbo-go 杩戞湡瀹炵幇浜� REST 鍗忚鏀寔锛屽彲浠ュ拰 Spring Cloud 鐢熸€佷簰鑱旓紱骞村垵瀹炵幇浜嗗拰 gRPC 鐨勪簰鑱旓紝杩欏 Dubbo-go 鏈変粈涔堟剰涔夛紵 - -**Dubbo-go 閭撴槑锛�** - -Dubbo-go 鍦ㄦ敮鎸佷簡 REST 鍗忚涔嬪悗锛屽凡缁忓彲浠ュ仛鍒拌窡缁濆ぇ閮ㄥ垎鍩轰簬 HTTP 鍗忚鐨勫井鏈嶅姟妗嗘灦杩涜閫氫俊銆� - - -[REST 鎬讳綋璁捐] - -鍙﹀涓€涓獊鍑轰紭鐐规槸锛屾敮鎸佷簡 gRPC 鍜� REST 涔嬪悗锛孌ubbo-go 灏卞彲浠ヨ€冭檻鍜屼竴浜涘叕鍙稿唴閮ㄨ嚜鐮旂殑妗嗘灦杩涜閫氫俊浜嗐€傞€氬父涓€浜涙瘮杈冨ぇ鐨勫叕鍙镐細鑷爺妗嗘灦锛屾垨鑰呮繁搴﹀畾鍒舵煇浜涘紑婧愭鏋躲€傝€屽彧瑕佸畠浠敮鎸� gRPC 鎴栬€� HTTP 鍗忚锛孌ubbo-go 灏卞彲浠ヤ繚璇佷笌杩欎簺妗嗘灦鐨勬棤缂濊鎺ャ€� - -杩樻湁涓€涓紭鍔匡紝REST 鍗忚瀵瑰墠绔洿鍙嬪ソ锛屽彲浠ョ洿鎺ユ妸 Dubbo-go 寮€鍙戠殑鏈嶅姟缁欏墠绔敤锛岃€屼笉鐢ㄥ姞涓€灞傚崗璁浆鎹紝涔熼伩鍏嶄簡鍓嶇鐩存帴鍙戣捣 RPC 璇锋眰銆傚洜姝わ紝Dubbo-go 涔熷氨鍙互鎴愪负瀹冧滑鍦� Go 寰湇鍔℃鏋剁殑涓€涓瘮杈冧紭绉€鐨勯€夋嫨銆� - -**OSCHINA锛�** -1.4 鐗堟湰涓紝Dubbo-go 鍦ㄥ彲瑙傛祴鎬ф柟闈㈤噰鐢ㄤ簡 tracing 鍜� metric锛宮etric 鐨勫疄鐜板弬鑰冧簡 Dubbo 鐨勫仛娉曪紝涔熷仛浜嗕竴浜涜皟鏁达紝鍏蜂綋鏄€庝箞鏍凤紵 - -**Dubbo-go 閭撴槑锛�** - -鍙娴嬫€ф槸琛¢噺涓€涓井鏈嶅姟妗嗘灦鐨勯噸瑕佹柟闈€€備竴鑸彲瑙傛祴鎬у垎鎴� tracing銆乵etric 鍜� log 涓変釜閮ㄥ垎銆� - - - -鍚庣画锛屾垜浠皢涓昏鑰冭檻 k8s 鏈韩鎻愪緵鐨� CRD + Operator 鐨勬柟妗堬紝姣曠珶瓒婃潵瓒婂鐨� k8s 鍛ㄨ竟鐨勯」鐩兘鍦ㄤ互 Operator 浣滀负鍒囧叆鐐广€侱ubbo-go 绀惧尯鍚庣画鐨勬柟妗堝皢浼氫互 CRD 鐨勫舰寮忓湪 k8s 鍐呮敞鍐屽拰鍙戠幇鏈嶅姟銆傝繖鏍峰仛鐨勫師鍥犳湁寰堝锛岄鍏堟槸涓轰簡鍑忓皯 Dubbo-go 瀵� kube-apiserver 鐨勭洿鎺ヤ緷璧栥€傚叾娆℃槸涓轰簡鏍囧噯鍖栨敞鍐屾ā鍨嬶紝褰撴湇鍔℃ā鍨嬩互 CRD 鐨勫舰寮忓瓨鍦ㄥ湪 k8s 闆嗙兢涓箣鍚庯紝鍏朵粬鍥寸粫 k8s 鐨勯」鐩彲浠ョ洿鎺ヤ娇鐢ㄨ繖浜涜祫婧愪簩娆″紑鍙戝拰鎷撳睍銆傝€岃繖绉嶆柟寮忔洿鍔� CloudNative銆� - -**OSCHINA锛�** -Dubbo-go 鐜板湪鍦ㄤ簯鍘熺敓搴旂敤涓婄殑甯冨眬鏄€庢牱鐨勶紵 - -**Dubbo-go 閭撴槑锛�** - -绀惧尯鐨勪富瑕佷汉鍔涙涓庤殏铓侀噾鏈嶇殑 mosn 绀惧尯灞曞紑鍚堜綔銆傜洰鍓嶆湁 5 涓汉鍔涗笌 mosn 绀惧尯涓€璧峰湪 mosn 涓疄鐜� Dubbo 鐨勬湇鍔″彂鐜般€佹湇鍔℃敞鍐屽拰鍩烘湰鐨� RPC 閫氫俊绛夋暟鎹钩闈㈢殑鑳藉姏锛屽湪 istio 灞傞潰鏀寔閫氳繃 XDS 瀹炵幇閰嶇疆涓嬪彂锛屼互瀹炵幇 mosn + Dubbo-go 銆愬祵鍏� mosn銆� + istio 杩欑 sidecar 褰㈠紡鐨勪簯鍘熺敓鏂规銆傚凡瀹屾垚鐨勫伐浣滃凡缁忓湪澶氱偣绉戞妧灞曞紑娴嬭瘯锛岃繎鏈� mosn 绀惧尯鍚屽浼氬湪 A2M 澶т細涓婂叕甯冨叿浣撹繘灞曘€� - -闄や簡 sidecar 杩欑 proxy 褰㈠紡鐨勪簯鍘熺敓鏂规锛岀ぞ鍖鸿繕璁″垝瀹炵幇 Dubbo-go銆愬簲鐢� sdk銆� + istio 杩欑 proxyless 鏂瑰紡鐨勪簯鍘熺敓鏂规銆侸ava 搴旂敤鎴栬€� Go 搴旂敤閫氳繃 istio 鐨� xDS 鍗忚瀹屾垚鏈嶅姟娉ㄥ唽鍜屽彂鐜颁互鍙婅矾鐢卞垎鍙戙€傛垨鑰呰锛屾垜浠姏姹傚井鏈嶅姟鍜屼簯鍘熺敓鍏卞瓨锛屽彲浠ョО涔嬩负鈥滃弻妯″井鏈嶅姟鈥濄€傝繖绉嶁€滃弻妯″井鏈嶅姟鈥濆厑璁告爣鍑嗙殑 Dubbo-go + sidecar 鍜� Dubbo-go銆愬簲鐢� sdk銆� + istio 涓ょ妯″紡閮ㄧ讲鐨勫簲鐢ㄥ叡瀛樸€傝繖灏嗘槸 Dubbo-go v1.6 鐨勬牳蹇冨伐浣溿€� - -**OSCHINA锛�** -Dubbo-go 鍑犱箮鏄垰涓€璇炵敓灏辫浆绉诲埌 Apache锛屽苟涓斿緢蹇彂甯冧簡 Apache Dubbo Go v1.1.0锛岃繖瀵圭ぞ鍖鸿繍钀ョ殑甯姪鏄粈涔堬紝鍙互鍒嗕韩涓� Dubbo-go 鐨勮繍钀ユ儏鍐靛拰缁忛獙鍚楋紵 - -**Dubbo-go 閭撴槑锛�** - -鍙互璇达紝Apache 鍩洪噾浼氬鎴戜滑鐨勫府鍔╂槸寰堝ぇ鐨勩€� - -涓€鏂归潰锛孉pache 鑷韩鐨勫厜鐜崄鍒嗘湁鍔╀簬鍚稿紩寮€鍙戝叧娉ㄥ拰鍙備笌锛涘彟澶栦竴鏂归潰锛孉pache 鐨勪竴浜涜姹傦紝涔熻绀惧尯杩愯惀鏇村姞瑙勮寖銆� - -绀惧尯杩愯惀闇€瑕佽繘涓€姝ヨ鑼冨寲锛岄€忔槑鍖栵紝浠ュ惛寮曟洿鍔犲鐨勪汉鍙備笌銆傛垜娉ㄦ剰鍒板緢澶氫紭绉€鐨勭ぞ鍖鸿繍钀ュ仛寰楀緢濂斤紝浠栦滑瀵� issue 鐨勭鐞嗗緢缁嗚嚧锛屾墦涓婁簡鍚勭鏍囩锛屽仛鍒颁簡瀵� issue 鐨勮交閲嶇紦鎬ョ殑绠$悊銆傝繖绉嶆爣绛捐兘澶熷緢瀹规槗鍚稿紩涓€浜涙墦绠楀皾璇曞紑婧愮殑鏂颁汉锛岀粰绀惧尯甯︽潵鏂扮殑琛€娑层€� - -鎴戜滑灏濊瘯浣跨敤 milestone 鐨勬柟寮忔潵绠$悊 Dubbo-go 鐨勬暣浣撹繘搴︺€傜幇鍦ㄤ篃鍦ㄥ皾璇曞畾鏈熷彫寮€绀惧尯浼氳锛岃璁虹ぞ鍖哄彂灞曟柟鍚戯紝閲嶅ぇ鐗规€х殑璁捐锛屼互鍙婅В鍐充簤绔細璁細闈㈠悜鏁翠釜绀惧尯锛屾兂鍙備笌鐨勪汉閮藉彲浠ュ弬涓庛€� - -Dubbo-go 搴旂敤鍙婅鍒� -**OSCHINA锛�** -Dubbo-go 閫傚悎浠€涔堟牱鐨勪紒涓氬拰鍦烘櫙锛� - -**Dubbo-go 閭撴槑锛�** - -鎴戜滑璁や负锛屽鏋滅敤鎴烽渶瑕佷竴娆� Go 璇█鏂归潰 gRPC 妗嗘灦锛屽彲浠ヨ€冭檻 Dubbo-go锛涘鏋滃叕鍙告湁鍜屽紓鏋勭郴缁熼€氫俊鐨勯渶姹傦紝Dubbo-go 涔熸槸涓€涓瘮杈冨ソ鐨勯€夋嫨銆傜壒鍒槸锛屽叕鍙稿唴閮ㄨ繕鏈� Java Dubbo 鎴栬€� Spring Clound 涔嬬被鐨勫簲鐢紝閭d箞 Dubbo-go 浼樺娍灏辨洿鍔犲ぇ浜嗐€� - -Dubbo-go 鍙互璇存槸 " all-in-one " 鎬ц川鐨� RPC 妗嗘灦锛岃嚜韬寘鍚湇鍔℃不鐞嗙瓑鍔熻兘锛岄潪甯哥渷鏃剁渷鍔涳紝鑰屼笖鑳藉闄嶄綆浣跨敤寰湇鍔$殑闂ㄦ銆� - -**OSCHINA锛�** -GitHub 鐨勭敤鎴峰垪琛ㄤ腑宸茬粡鏈夋潵鑷� 14 瀹朵紒涓氱殑浣跨敤璁板綍锛孌ubbo-go 涓€鑸細鎻愪緵鍝簺鍚庣画鏀寔锛� - -**Dubbo-go 閭撴槑锛�** - -鎴戜滑涓€鐩撮兘蹇€熷搷搴旂敤鎴风殑闂锛岃€屼笖绉瀬榧撳姳鐢ㄦ埛鍙備笌鍒� Dubbo-go 鐨勫紑鍙戜腑鏉ャ€傜洰鍓嶆秱楦︽櫤鑳姐€佹惡绋嬬瓑鍑犲鐢ㄦ埛宸茬粡鎴愪负浜嗙ぞ鍖鸿础鐚殑涓昏鍔涢噺銆� - -鏈夋椂鍊欑敤鎴锋潵鍋氳皟鐮旓紝杩涙潵绀惧尯鍜ㄨ闂鐨勬椂鍊欙紝鎴戜滑閮戒細绗戠О浠栤€滃鏋滈€夋嫨浜� Dubbo-go锛屽氨閫夋嫨浜嗕竴涓己澶х殑鍞悗鍥㈤槦鈥濄€� - -绀惧尯涓€浣嶅緢娲昏穬鐨� Contributor 娼樻€汇€恎ithub id: pantianying銆戝鎴戜滑鐨勭儹鎯呮湇鍔″簲璇ユ繁鏈変綋浼氥€傛瘮濡備粬浼氭彁 issue锛岀劧鍚庢垜浠篃浼氬緢蹇В鍐冲儚 router銆佷紭闆呴€€鍑哄姛鑳藉氨鏄湪娼樻€绘彁鍑轰箣鍚庯紝鎴戜滑寰堝揩瀹炵幇鐨勶紝 杩樻湁鏃╂湡涓€娆¢噸鏋勪箣鍚庯紝涔熸槸娼樻€诲皾椴滆瘯鐢ㄣ€傚皾椴滅増閫氬父鏈夊緢澶� BUG锛屾墍浠ユ垜浠兘鏄笂鐝墦宸ワ紝涓嬬彮缁欐綐鎬讳慨 BUG锛屼篃绠楁槸鏈嶅姟鍛ㄥ埌鐑儏鐢ㄥ績浜嗐€� - -棰濆璇翠笅锛岀洰鍓� Dubbo 瀹樻柟涔熷凡缁忔姇鍏ヤ汉鍔涘弬涓� Dubbo-go 鐨勫紑鍙戯紝闃块噷闆嗗洟浠婂勾瀹屾垚 HSF 鍜� Dubbo 鐨勮瀺鍚堝悗锛屼細鍦ㄩ泦鍥㈠唴閫愭鎺ㄥ箍浣跨敤 Dubbo-go銆� - -**OSCHINA锛�** -Dubbo-go 涓嬩竴鐗堟湰棰勮浠€涔堟椂鍊欏彂甯冿紝鏈夋病鏈変竴浜涢暱杩滅殑鍙戝睍璁″垝锛� - -**Dubbo-go 閭撴槑锛�** - -褰撳墠姝e湪娴嬭瘯鐨勬槸 v1.5 鐗堟湰锛屽笇鏈涘叚鏈堜唤鑳藉彂鍑烘潵銆倂1.6 鐗堟湰姝e湪璁捐鍜岃鍒掍腑锛寁1.6 鏄拰 Dubbo 3 瀵归綈鐨勶紝鎵€浠ヤ篃浼氭槸涓€涓瘮杈冨ぇ鐨勭増鏈€� - -浠婂勾鎴戜滑绀惧尯涓昏闆嗕腑鍦ㄤ袱浠朵簨涓娿€傜涓€浠舵槸浜戝拰浜戝師鐢熺殑鏀寔锛岀幇鍦ㄨ繘琛屼腑鐨� v1.5 鍜� v1.6 閮芥槸鍥寸粫杩欎竴鐐圭殑銆備粖骞村嚑涔庢墍鏈夊ぇ鐨� feature 閮芥槸杩欐柟闈㈢殑銆� - -绗簩浠朵簨锛屽垯鏄繘涓€姝ユ彁楂� Dubbo-go 鐨勬枃妗c€佹敞閲婂拰浠g爜璐ㄩ噺銆傚潶鐧芥潵璇达紝Dubbo-go 鐨勬枃妗e苟涓嶆槸鐗瑰埆濂斤紝灏ゅ叾鏄敤鎴锋枃妗c€傛垜浠篃鏀跺埌浜嗗緢澶氱敤鎴风殑鎵硅瘎姝e湪鍔犲己 CI 鍜岃嚜鍔ㄥ寲娴嬭瘯杩欏潡銆傛€昏€岃█涔嬶紝鏂囨。涓庤川閲忚繖浠朵簨鏄粖骞寸殑澶寸瓑澶т簨銆� - -**OSCHINA锛�** -鏈€鍚庯紝璇蜂粙缁嶄竴涓嬭嚜宸卞惂銆� - -**Dubbo-go 閭撴槑锛�** - -璇磋捣鏉ユ尯鏈夋剰鎬濈殑锛屽氨鏄垜鏈韩鏄笟鍔″紑鍙戯紝骞朵笉鏄紶缁熸剰涔変笂鐨勪腑闂翠欢寮€鍙戞垨鑰呭熀纭€鏋舵瀯寮€鍙戙€傛垜鐩墠鍦� eBay 鍋氭敮浠樹笟鍔$殑寮€鍙戙€俥Bay 鏄竴涓� WLB 鐨勫叕鍙革紝涔熷氨鏄湪 eBay 鎴戞墠鏈変簡瓒冲鐨勪笟浣欐椂闂达紝寮€濮嬫姇鍏ュ埌浜嗗紑婧愮ぞ鍖轰腑銆� - -Dubbo-go 鏄垜绗竴涓繁鍏ュ弬涓庣殑寮€婧愰」鐩紝涔熸槸鎴戠涓€娆″皾璇曞皢涓汉瀵瑰垎甯冨紡绯荤粺鍜屽井鏈嶅姟娌荤悊鐨勭悊瑙d粯璇稿疄璺电殑椤圭洰銆傚畠鏄垜鐨勭涓€涓€滃瀛愨€濄€� - -鍥犱负宸ヤ綔鐨勫叧绯伙紝鎴戠畻鏄� Dubbo-go 绀惧尯鎶曞叆鏃堕棿鏈€澶氱殑浜轰箣涓€锛屼负 Dubbo-go 寮€鍙戜簡涓€浜涘緢鏈夋剰鎬濈殑鐗规€э紝涔熷洜姝ゆ垚浜� Apache committer銆傚彟澶栨垜杩樻壆婕斾簡缂栬緫鐨勮鑹诧紝甯ぞ鍖哄皬浼欎即鍐欑殑鍗氬鏂囩珷鎶婃妸鍏筹紝娑︽鼎鑹层€傛垜涔熺畻鏄� Dubbo-go 鐨勪富瑕佺鐞嗕汉鍛樹簡锛屾瘮濡傝 v1.5 杩欎釜鐗堟湰灏辨槸涓昏鐢辨垜鎺ㄨ繘鐨勨€斺€旇繖澶ф杩樻槸鍥犱负鎴戞椂闂存瘮杈冨銆� diff --git a/doc/md/arch/dubbo-go-review-and-future.md b/doc/md/arch/dubbo-go-review-and-future.md deleted file mode 100644 index 9fc1df668b664a8790b9edc1c1123f2386cb6212..0000000000000000000000000000000000000000 --- a/doc/md/arch/dubbo-go-review-and-future.md +++ /dev/null @@ -1,246 +0,0 @@ -# [dubbogo 鍥為【涓庡睍鏈沒(https://blog.csdn.net/RA681t58CJxsgCkJ31/article/details/103856203/) - -2020-01-06 08:30:00 - -Dubbo 鏄樋閲屼簬 2011 骞村紑婧愮殑涓€娆鹃珮鎬ц兘 RPC 妗嗘灦锛屽湪 Java 鐢熸€佷腑鍏锋湁涓嶅皬鐨勫奖鍝嶅姏銆�2019骞�5鏈�21鏃ワ紝Dubbo 浠� Apache 杞欢鍩洪噾浼氭瘯涓氾紝鎴愪负 Apache 椤剁骇椤圭洰銆傜洰鍓嶏紝姣曚笟鍚庣殑 Dubbo 椤圭洰鐨勭敓鎬佷腑宸茬粡姝e紡瀹樺寮曞叆浜� Go 璇█锛屽彂甯冧簡 Dubbogo 椤圭洰銆傛湰鏂囧嵆鏄 Dubbogo 杩欎竴椤圭洰鐨勫畬鏁村洖椤句笌鐪熷疄灞曟湜銆傜敱铓傝殎閲戞湇涓棿浠舵妧鏈笓瀹朵簬闆ㄥ拰鎼虹▼鍩虹涓彴鐮斿彂閮ㄥ伐绋嬪笀鏂归摱鍩庡悎浣滃畬鎴愩€� - -**01** - -**Dubbogo聽鏁翠綋妗嗘灦** - -鍏堜粙缁嶄竴涓� dubbogo 鐨勭紭璧凤紝鍏堢湅涓嬮潰杩欏箙鍥撅細 - -聽 聽 聽 聽 聽 聽 聽 - -鏈€鍙宠竟鐨� service0 鍜� service1 鏄� Dubbo 鐨勬湇鍔$锛屽乏杈圭殑 gateway 鏄綉鍏筹紝HTTP 聽璇锋眰浠庣綉鍏宠繘鏉ワ紝蹇呴』杞寲鎴� Dubbo 鐨勫崗璁墠鑳藉埌鍚庨潰鐨勬湇鍔★紝鎵€浠ヤ腑闂村姞浜嗕竴灞俻roxy 瀹屾垚鐩稿叧鍔熻兘銆傚熀鏈笂姣忎釜 service 閮介渶瑕佷竴涓� proxy 鍘昏浆鍖栧崗璁拰璇锋眰锛屾墍浠ヨ繖涓椂鍊� dubbogo 鐨勯」鐩渶姹傚氨鍑烘潵浜嗐€傛渶鍒濈殑瀹炵幇灏辨槸浠� Dubbo 鐨� Go 鐗堟湰浣滀负鐩爣锛屽疄鐜颁笌 Java 鐗堟湰 Dubbo 鐨勪簰璋冦€� - -**Dubbogo 鐩爣** - -聽聽 聽聽聽 聽 聽 聽聽 - -鐒跺悗杩欎釜鍥炬槸 dubbogo 鐨勭幇鍦ㄨ揪鍒扮殑鐩爣锛氱敤涓€浠� Go 瀹㈡埛绔殑浠g爜鑳藉鍦ㄦ病鏈変换浣曚唬鐞嗗拰鍏朵粬涓棿浠剁殑鎯呭喌涓嬬洿鎺ヨ皟鐢ㄥ叾浠栬瑷€绔紝涓昏鏄疛ava 鏈嶅姟绔殑鏈嶅姟鍜� Go 鏈嶅姟绔殑鏈嶅姟锛岃€� Go 浣滀负鏈嶅姟绔殑鏃跺€欙紝Java 瀹㈡埛绔篃鍙互鐩存帴璋冪敤 Go 鏈嶅姟绔殑鏈嶅姟銆� - -**Dubbogo 鍙戝睍鍘嗙▼** - -聽 聽 聽 聽 聽 聽 聽 - -涓嬮潰浠嬬粛 dubbogo 鐨勬暣涓彂灞曞巻绋嬶紝鍦�2016骞�8鏈堜唤鐨勬椂鍊欐槸浜庨洦鏋勫缓浜� dubbogo 椤圭洰锛岄偅涓椂鍊欑殑 dubbogo 鍙敮鎸侀€氳繃 jsonrpc 2.0 鍗忚 杩涜 HTTP 閫氫俊锛屽埌 2018 骞�2 鏈堜唤鏀寔 hessian2 鍗忚杩涜 TCP 閫氫俊锛屽埌 2018 骞� 5 鏈堥」鐩 dubbo 瀹樻柟鍏虫敞鍚庡紑濮嬩粠闆堕噸鏋勶紝浜庨洦 2018 骞� 8 鏈堜唤鍒濇閲嶆瀯鍑轰竴涓� 0.1 鐗堟湰銆傜敱浜庢垜浠惡绋嬭繖杈圭殑涓€浜涢渶姹傦紝2019 骞村垵鎴戝拰鎴戠殑鍚屼簨浣曢懌閾篃寮€濮嬪弬涓庝簡 dubbogo 椤圭洰鐨勯噸鏋勶紝鍚屾椂鍜屼簬闆ㄤ竴璧峰紑濮嬬粍寤虹ぞ鍖猴紝鍦� 2019 骞� 6 鏈堜唤鐨勬椂鍊� dubbogo1.0 鐗堟湰涓婄嚎锛岃繖涓増鏈殑閲嶆瀯鏄弬鐓т簡 Dubbo 鐨勬暣浣撹璁★紝涓讳綋鍔熻兘閮藉湪杩欎釜鐗堟湰閲岄潰鏈夊憟鐜帮紝鍚屾湡璇ラ」鐩繘鍏ヤ簡 Apache 缁勭粐銆備粖骞� 8 鏈堜唤鐢辩ぞ鍖哄悓瀛︽湜鍝ヨ礋璐g殑 Dubbo-go-hessian2 鐨勯」鐩篃杩涗簡 Apache 缁勭粐銆傚埌鐩墠涓烘鎴戜滑绀惧尯鏈変簺宸ヤ綔宸茬粡鍜� dubbo 榻愬ご骞惰繘锛屼緥濡傚 grpc 鍜� k8s 鐨勬敮鎸侊紝鐩稿叧浠g爜姝e湪 review 涓紝骞村簳鍙戝竷鐨� v1.3 鐗堟湰浼氬寘鍚� grpc 鏀寔銆傞璁″埌2020骞达紝涔熸槸鏄庡勾鐨勭洰鏍囷紝甯屾湜椤圭洰鑳戒互鍏ㄦ柊濮挎€佽瀺鍏ヤ簯鍘熺敓鏃朵唬銆� - -**Dubbogo 鏁翠綋璁捐** - -聽 聽 聽 聽 聽 聽 聽 - -杩欎釜鍥惧ぇ瀹舵槸涓嶆槸鐪嬬潃寰堢啛鎮夛紝鏄� Dubbo 鐨勬暣涓垎灞傝璁″浘锛屼絾鏄皯浜� Dubbo 閲岄潰鐨勫緢澶氫笢瑗匡紝鍥犱负鎴戜滑鏄€熼壌浜� Dubbo 鐨勫垎灞傝璁″拰鏄撴嫇灞曟€х殑鎬濇兂锛屼絾鏄敱浜� Go 璇█鍜� Java 璇█鐨勬湰璐ㄥ樊鍒喅瀹氫簡鎴戜滑椤圭洰璁捐涓嶅彲鑳藉畬鍏ㄧ収鎼畠锛屾湁涓€浜涗笢瑗垮氨缁欏畠绠€鍖栦簡锛岀壒鍒槸鍗忚灞傝繖涓€鍧椼€傛瘮濡傝 Dubbo 閲岄潰 SPI 鐨勬嫇灞曪紝鍦� Go 閲岄潰鎴戜滑鏄€熺敤浜� Go 鐨勯潪渚靛叆寮忔帴鍙g殑鏂瑰紡鍘诲疄鐜扮殑锛岀敱浜� Go 绂佹 package 寰幆寮曠敤锛屾墍浠� dubbogo 鍦ㄤ唬鐮佺殑鍒嗗寘鍒嗗眰涓婇潰涔熸槸鏈変弗鏍肩殑瑙勫畾锛岃繖姝eソ璺熷畠鐨勬槗鎷撳睍鎬х殑鐗规€х粨鍚堜簡璧锋潵銆� - -鍏充簬浠g悊閮ㄥ垎锛屽洜涓� Java 鏈夊姩鎬佷唬鐞嗭紝Go 鐨勫弽灏勫氨娌℃湁 Java 鐨勫弽灏勯偅涔堝己澶э紝鎵€浠ユ垜浠繖杈逛唬鐞嗙殑瀹炵幇鏂瑰紡涔熻窡瀹冩槸涓嶄竴鏍风殑銆� - -**Dubbogo 鑳藉姏澶у浘** - -聽 聽 聽 聽 聽 聽 聽 - -涓婇潰鐨勫浘鏄垜浠綋鍓� dubbogo 椤圭洰瀹炵幇鐨勮兘鍔涘ぇ鍥撅紝鏈€涓婂眰鏄綋鍓嶅疄鐜扮殑涓€浜涙敞鍐屼腑蹇冩湁 zk銆乪tcd銆乶acos銆乧onsul锛岀幇鍦ㄤ笌 k8s 鍏宠仈鐨勫姛鑳芥鍦ㄥ紑鍙戜腑銆傞厤缃腑蹇冪洰鍓嶆槸鏀寔 Apollo 鍜� zookeeper銆傚乏杈规槸娑堣垂绔紝娑堣垂绔繖杈瑰疄鐜扮殑鏄湁 cluster 鐨勶紝绛栫暐涓婂熀鏈笂瀹炵幇浜� dubbo 鏀寔鐨勬墍鏈夌瓥鐣ャ€傜劧鍚庤繕鏈夎礋杞藉潎琛$瓥鐣ワ紝fillter 涓昏鏄湁涓€涓� tps 鐨勯檺娴佽繕鏈夋硾鍖栬皟鐢紝杩欎袱涓悗闈細璁插埌銆傜紪鐮佸眰鐜板湪灏辨槸 jsonrpc 2.0 鍜� hessian2锛宲rotobuf v3 姝e湪鍔犵揣 review 涓€傜洰鍓嶇ぞ鍖烘鍦ㄥ紑鍙戜腑鐨勬敮鎸侊紝鍖呮嫭 trace銆乬rpc銆乲8s娉ㄥ唽涓績锛屼互鍙婂 restful 鐨勬敮鎸併€� - -**鍏抽敭椤圭洰** - -聽 聽 聽 聽 聽 聽 聽 - -鐩墠 dubbogo 椤圭洰鏁翠綋鐢� 4 涓粍鎴愰儴鍒嗐€傜涓€涓槸 getty锛屼竴涓紓姝ョ綉缁� IO 搴擄紝鏄疄鐜� tcp 閫氫俊鍗忚鏈€鍧氬疄鐨勫熀纭€锛涚浜屼釜鏄� dubbo-go-hessian2锛岃繖涓槸涓庡綋鍓� java hessian2 楂樺害鍏煎鐨勯」鐩紱绗笁涓槸 gost锛屾槸 dubbogo 鐨� 鍩虹搴擄紱鏈€鍚庢槸 dubbogo 鐨勭ず渚嬪簱锛岀洰鍓嶅凡缁忚縼绉诲埌 https://github.com/apache/dubbo-samples锛屽拰 Java 绀轰緥鍚堝苟浜嗐€傝繖浜涢兘鏄綋鍓� dubbogo 涓昏鐨勭粍鎴愰」鐩€� - -**02** - -**鍗忚瀹炵幇** - -聽 聽 聽 聽 聽 聽 聽 - -鎺ヤ笅鏉ヨ涓€浜涘叿浣撶殑瀹炵幇鍜岄儴鍒嗙殑鍔熻兘锛屼笂鍥炬槸 dubbo-go-hessian2 瀹炵幇锛屽垪鍑烘潵鏄竴浜涗富瑕佺殑鍔熻兘鍒楄〃锛岀涓€涓槸 Java 鐨� JDK Exceptions 鐨勫疄鐜帮紝閲岄潰瀹炵幇浜� 40 澶氱鐨� Java JDK 涓昏鐨勫紓甯革紝鍙互涓� Java 鐨� hessian2 鐗堟湰浜掔浉瑙g紪鐮佺殑鏀寔锛屾敮鎸佽嚜鍔ㄦ墿灞曡嚜宸卞疄鐜� exceptions锛屾垨鑰呮槸涓嶅父瑙佺殑 Exceptions锛涚浜屼釜鏄敮鎸佸瓧娈靛悕鐨勮仈鍚嶏紝Go 鍙簭鍒楀寲鐨勫瓧娈垫槸澶у啓瀛楁瘝寮€澶达紝浣嗘槸 Java 榛樿鏄皬鍐欏紑澶寸殑锛屾墍浠ユ湁缂栫爜鐨勫瓧娈靛悕涓嶄竴鑷寸殑闂锛岃繖灏辨湁鍒悕璇嗗埆鍜屾敮鎸佽嚜瀹氫箟鍛藉悕銆� - -go-hessian2 杩樻敮鎸� Java 鐨� bigdecimal銆丏ate銆乀ime銆佸熀鏈被鍨嬬殑鍖呰绫诲瀷銆丟eneric Invocation銆丏ubbo Attachements锛岀敋鑷虫敮鎸� emoji 琛ㄦ儏銆� - -go-hessian2 閲岄潰濡傛灉瑕佽В鐮佸拰缂栫爜鐢ㄦ埛鑷畾涔夌被鍨嬶紝鐢ㄦ埛闇€瑕佽嚜宸辨妸瀹冩敞鍐岃繘鍘伙紝鍓嶆彁鏄敮鎸� go-hessian2 鐨� POJO interface锛屾墠鑳借窡 JAVA 瀵瑰簲绫讳簰鐩歌В缂栫爜銆� - -聽 聽 聽 聽 聽 聽 聽 - -涓婇潰鏄� go-hessian2 鐨勭被鍨嬪搴旇〃锛岄渶瑕佺壒鍒偣鍑虹殑鏄� int锛実o 杩欒竟鐨� int 绫诲瀷鍦ㄤ笉鍚屽瓧闀跨郴缁熶笅鏄湁涓嶅悓鐨勫ぇ灏忥紝鍙兘鏄� 32 浣嶄篃鍙兘 64浣嶇殑锛岃€� Java 鐨� int 鏄� 32 浣嶇殑锛屾墍浠ユ垜浠互 go 璇█鐨� int32 绫诲瀷瀵瑰簲 Java int 绫诲瀷銆� - -鍒氭墠鎻愬埌浜� Java 鐨� Class 鍜� go struct 鐨勫搴斻€備笂鍥炬湁涓€涓� go-hessian2 鐨� POJO 鎺ュ彛瀹氫箟锛屾瘡涓� Java class 瀵瑰簲鍒� go struct锛屽垯 struct 闇€瑕佺粰鍑� Java ClassName銆� - -聽 聽 聽 聽 聽 聽 聽 - -浣犱篃鍙互鍔� hessian 鏍囩锛岃В鏋愮殑鏃跺€欎細鎶婅繖涓瓧娈靛悕鐢ㄥ埆鍚嶅啓杩涘幓锛屽疄鐜拌嚜瀹氫箟 fieldName銆傞粯璁ゆ儏鍐典笅锛実o-hessian2 涓細鑷姩鎶� struct field 棣栧瓧姣嶅彉鎴愬皬鍐欎綔涓哄叾 fieldName銆� - -聽 聽 聽 聽 聽 聽 聽 - -娉涘寲寮曠敤锛屾槸 dubbogo 閲岄潰姣旇緝閲嶈鐨勫姛鑳姐€傜ぞ鍖轰竴浣嶅悓瀛﹂渶瑕佸熀浜� dubbogo 瀹炵幇缃戝叧锛屾敹闆嗗閮ㄧ殑璇锋眰锛岀劧鍚庨€氳繃娉涘寲寮曠敤鐨勫舰寮忚皟鐢ㄥ叾浠� Dubbo 鏈嶅姟锛屾渶鍚庤嚜宸卞姩鎵嬫妸瀹冨疄鐜颁簡銆備娇鐢ㄦ椂锛岄鍏堥渶瑕佸湪椤圭洰閲屽唴缃竴涓� GenericService 鏈嶅姟锛岃皟鐢↙oad锛岀劧鍚庡氨鍍忔甯哥殑璋冪敤鏈嶅姟涓€鏍风洿鎺ヨ皟鐢紝璺� Java 鏄被浼肩殑锛孏o 瀹㈡埛绔彲浠ヤ笉鐭ラ亾 Java 鐨勬帴鍙e畾涔夊拰绫诲畾涔夛紝鎶婃柟娉曞悕銆佸弬鏁扮被鍨嬨€佸弬鏁版暟缁勪互涓€涓� map 鐨勫舰寮忎紶杈撳埌 Java 鏈嶅姟绔紝Java 鏈嶅姟绔敹鍒拌姹傚悗杩涜璇嗗埆锛屾妸瀹冭浆鎹㈡垚 POJO 绫汇€� - -浠ヤ笂鏄� go-hessian2 涓€浜涚粏鑺傘€備笂鏂囪鍒扮殑娉涘寲寮曠敤锛屾槸鎶婄綉鍏充綔涓烘暣涓唴缃� Dubbo 鏈嶅姟鐨勫叕鍏辨秷璐圭锛屼娇鐢ㄧ殑鏃跺€欏彧闇€瑕佺煡閬撹姹傜殑鏂规硶銆佸弬鏁扮被鍒紝鐒跺悗灏辫兘澶熻皟鐢� Dubbo 鐨勬湇鍔°€傚悗闈富瑕佸垎浜笁閮ㄥ垎鍐呭锛氶鍏堟槸缃戠粶寮曟搸銆佸簳灞傜綉缁滃簱杩欏潡锛涘叾娆℃槸鏈嶅姟娌荤悊鏂归潰鐨勫唴瀹癸紝鍏朵腑鍖呭惈浠� k8s 浣滀负娉ㄥ唽涓績鐨勪竴涓垵姝ョ殑瑙e喅鏂规锛涚涓夐儴鍒嗘槸浜掕仈浜掗€氾紝涓昏鏄拰 grpc 鎵撻€氥€傛渶鍚庣粰鍑轰竴涓睍鏈涳紝鍖呭惈 dubbogo 绀惧尯鏄庡勾鐨勫伐浣滃唴瀹广€� - -**03** - -**缃戠粶寮曟搸** - -dubbogo 鐨勭綉缁滃紩鎿庨噷闈㈠垎涓轰笁灞傦紝 濡備笅鍥炬墍绀猴細 - - - -鏈€搴曞眰 streaming 澶勭悊浜岃繘鍒舵祦锛岀浜屽眰 codec灞傦紝杩涜鍗忚鐨勫簭鍒楀寲鍜屽弽搴忓垪鍖栵紝绗笁灞傛槸 Eventlistener锛屾彁渚涘簲鐢ㄤ娇鐢ㄦ帴鍙c€俿treaming 灞傝兘鏀寔 websocket銆乀CP銆乁DP 涓夌缃戠粶閫氳鍗忚锛岃繖灞傚叿鏈変竴瀹氱殑鐏垫椿鎬э紝浠婂勾骞村垵涓婃捣鏈変竴涓悓瀛︿粖骞存妸 KCP 涔熷姞杩涘幓浜嗭紝褰撴椂璇磋寮€婧愯础鐚嚭鏉ワ紝鎴戣繕鍦ㄦ湡寰呬腑銆俢odec 灞傚彲浠ラ€傜敤涓嶅悓鍗忚锛岀敤鎴疯嚜瀹氫箟鍗冲彲銆� - -聽 聽 聽 聽 - -EventListener 瀵逛笂灞傛毚闇蹭簡 4 涓洖璋冩帴鍙c€傜涓€涓槸 OnOpen锛岀綉缁滆繛鎺ュ垵寤烘垚鍔熸椂琚皟鐢紝搴旂敤灞傚鏋滃垽瀹氬叾涓烘甯歌繛鎺ワ紝鍒欏彲浠ユ妸杩炴帴 session 瀛樺偍涓嬫潵锛屽鏋滅敤鎴峰垽鏂綋鍓嶈繛鎺ヨ繃澶氬垯杩斿洖涓€涓潪绌虹殑 error锛屽垯杩欎釜杩炴帴浼氳 dubbogo 鍏抽棴銆傚叾娆℃槸 OnError 浜嬩欢锛屽綋缃戠粶杩炴帴鍑洪敊锛屽氨浼氬洖璋冨埌杩欎釜鎺ュ彛锛屽湪 dubbogo 鍏抽棴杩欎釜杩炴帴涔嬪墠鍏佽鐢ㄦ埛鍋氱浉搴斿鐞嗭紝濡傛妸缃戠粶杩炴帴 session 浠庡簲鐢ㄥ眰鐨� session 姹犱腑鍒犻櫎銆傜涓変釜鏄� OnCron锛屽鐞嗗畾鏃朵换鍔★紝濡傚績璺筹紝dubbogo 閽堝 websocket 鍗忚鍦ㄥ簳灞傜洿鎺ユ妸蹇冭烦鐑换鍔″鐞嗕簡锛岄拡瀵� tcp 鍜� udp 鍗忚闇€瑕佺敤鎴峰湪杩欎釜鍥炶皟鍑芥暟涓嚜宸卞疄鐜般€傜鍥涗釜鎺ュ彛鏄� OnMessage锛岀敤浣滃鐞嗕竴涓畬鏁寸殑缃戠粶鍖呫€傚彲浠ョ湅鍒版暣涓洖璋冩帴鍙i鏍艰窡 websocket 鐨勬帴鍙e緢鍍忋€� - -聽 聽 聽 聽 聽 聽 聽 - -**鍗忕▼姹�** - -dubbogo 鐨� goroutine pool 閲屾湁 worker channel 銆愭暟閲忎负 M銆戝拰閫昏緫澶勭悊 goroutine 銆愭暟閲忎负 N銆戝拰缃戠粶浠诲姟銆愮綉缁滃寘銆戜笁绉嶈鑹诧紝缃戠粶瑙e寘鍚庢妸鎶婂寘鎸夌収鏌愮瑙勫垯鏀惧叆鏌愪釜 worker pool锛岀劧鍚庨€昏緫澶勭悊 goroutine 浠� channel 涓鍙栨暟鎹寘骞舵墽琛岄€昏緫澶勭悊锛屽叾鐩殑鏄槸涓轰簡鎶婄綉缁� I/O 涓庨€昏緫澶勭悊鍒嗗紑銆備笉鍚岀殑 goroutine pool 璁捐涓紝鏈夌殑 N 澶у皬浼氬彉鍖栵紝鏈夌殑涓嶅彉锛屽垎鍒彲绉颁箣涓哄彲浼哥缉 goroutine pool 鍜屼笉鍙几缂� goroutine pool锛屽彲浼哥缉 goroutine pool 鍙互瀵规満鍣ㄨ祫婧愮殑浣跨敤涓嶅彲棰勮銆俤ubbogo 閲囩敤浜嗕笉鍙几缂� goroutine pool锛屽叾鑰冮噺鏄檺瀹氬叾缃戠粶璧勬簮浣跨敤鐨勪笂闄愩€� - -鍙﹀锛宒ubbogo 鐨� goroutine pool 涓嶈€冭檻鏀跺寘鍚庣殑澶勭悊椤哄簭銆傝濡傦紝dubbogo 鏈嶅姟绔敹鍒颁簡 A 鍜� B 涓や釜缃戠粶鍖咃紝dubbogo 鏈夊彲鑳藉厛澶勭悊缃戠粶鍖� B锛屽悗澶勭悊缃戠粶鍖� A銆傚鏋滃鎴风鐨勬瘡娆¤姹傞兘鏄嫭绔嬬殑锛屾病鏈夊墠鍚庨『搴忓叧绯伙紝鍒欏甫鏈変笉鑰冭檻缃戠粶鍖呭鐞嗛『搴忔槸娌℃湁闂鐨勩€傚鏋滄湁寮洪『搴忚姹傦紝璀涓婂眰鐢ㄦ埛鍏虫敞 A 鍜� B 璇锋眰澶勭悊鐨勫墠鍚庨『搴忥紝鍒欏彲浠ユ妸 A 鍜� B 涓や釜璇锋眰鍚堝苟涓轰竴涓姹傦紝鎴栬€呮妸 dubbogo 鐨� goroutine pool 鐗规€у叧闂€� - -涓€鑸儏鍐典笅锛屼笉寤鸿澶у鑷繁鍐� goroutine pool锛屽洜涓� Go 璇█瀵� goroutine 璧勬簮鐨勭鐞嗗凡缁忛潪甯稿厛杩涳紝姣斿閲婃斁涓€涓崗绋嬶紝Go 涓嶄細椹笂閿€姣佹帀鐩稿叧鐨勮祫婧愶紝涓€鏃︽湁鍒涘缓 goroutine 鐨勯渶瑕侊紝椹笂灏卞彲澶嶇敤杩欎釜鎴愭湰鏄緢浣庣殑銆備粈涔堟儏鍐典笅浣跨敤 Goroutine Pool 鍛紵涓汉瑙夊緱鍍忕綉缁滃簱閫昏緫澶勭悊杩欑被鍦烘櫙涓嬫墽琛屽悓鏍风被鍨嬩换鍔″満鏅笅纭畾 goroutine 浼氳杩呴€熼噸澶嶄娇鐢ㄦ椂鍙互灏濊瘯浣跨敤锛屼絾鏄€庝箞鐢ㄥソ杩樻槸闇€瑕佷粩缁嗚€冮噺锛屽嵆闇€瑕佷粩缁嗚€冮噺 M 涓� N 鐨勬瘮渚嬪叧绯汇€� - -鍋囪澶勭悊鏌愮缃戠粶浠诲姟璇锋眰锛屾湁鐨勮姹�1绉掑氨澶勭悊瀹屼簡锛屾湁鐨勫彲鑳�10姣澶勭悊瀹屼簡锛岃缃� M 涓� N 姣斾緥涓� 1:1锛岃繖鏍� 1 瀵� 1 閫犳垚鐨勫悗鏋滃彲鑳芥槸楗ラタ锛屽氨鏄湁涓€浜涢槦鍒楀鐞嗙殑寰堝揩锛屾湁鐨勫鐞嗗緢鎱紝鏁翠綋璐熻浇涓嶅潎琛★紝杩欑鎯呭喌涓嬪氨涓嶆帹鑽愪綘鐢ㄥ崗鎴愭睜浜嗐€� - -杩樻湁涓€涓瘮渚嬫ā鍨嬫槸鏄�1锛歂鐨勶紝涓€鍐欏璇伙紝姣斿璇存墍鏈夌殑璇锋眰閮戒氦缁欎竴涓槦鍒楋紝鎵€鏈夐€昏緫澶勭悊 goroutine pool 閮芥秷璐硅繖涓槦鍒楋紝閫犳垚鐨勭粨鏋滄槸浠€涔堝憿锛熷洜涓轰綘鍙湁涓€涓敓浜ц€咃紝閭d綘灏卞彧鏈変竴涓槦鍒楋紝澶氫釜娑堣垂鑰呮秷璐硅繖涓€涓槦鍒楋紝閫犳垚鐨勭粨鏋滄槸浠€涔堝憿锛熷洜涓� go channel 鐨勪綆鏁堢巼銆愭暣浣撲娇鐢ㄤ竴涓� mutex lock銆戦€犳垚娑堣垂鑰� goroutine hang 鍦ㄩ攣绔炰簤涓婏紝褰撶劧鍏剁綉缁滃寘澶勭悊椤哄簭鏇存棤浠庝繚璇併€� - -姣旇緝鍧囪 鐨勬晥鏋滃氨鏄� M 鍜� N 閮藉ぇ浜� 1锛宒ubbogo 鐨勭殑 goroutine pool 妯″瀷涓� M 鍜� N 鐨勫彇鍊煎彲浠ヨ嚜琛岄厤缃紝鍏舵晥鏋滄槸姣忎釜 channel 琚� N/M 涓� goroutine 娑堣垂锛岃繖绉嶆ā鍨嬬被浼间簬 kafka 鐨� consumer group锛屽叾浼樼偣鏄吋椤惧鐞嗘晥鐜囧拰閿佸帇鍔涘钩琛★紝鍙互鍋氬埌鎬讳綋灞傞潰鐨勪换鍔″鐞嗗潎琛°€� - -## - -**浼樺寲鏀硅繘** - -浼樺寲鏀硅繘涓昏浠庝笁涓柟闈㈠叆鎵嬶紝 濡備笅鍥炬墍绀猴細 - - - -聽 聽 聽 - -1\. 鍐呭瓨姹犮€俫oroutine pool 鏄鐞嗗 CPU 璧勬簮鐨勫垎閰嶏紝鍐呭瓨姹犲氨鏄鐞嗗唴瀛樿祫婧愮殑鍒嗛厤銆傛垜涓汉鍙嶅绾补涓轰簡鐐妧娌℃湁鐩殑鍦板啓鍐呭瓨姹狅紝鍏跺疄 Go 鐨勫唴瀛樼鐞嗚繖鍧楃洰鍓嶄紭鍖栫殑寰堝ソ浜嗐€侴o 璇█鍒濆鐗堟湰鐨勫唴瀛樼鐞嗕娇鐢ㄤ簡璋锋瓕鑷鐨� tcmalloc 搴擄紝杩欎釜搴撴妸搴旂敤閲婃斁鐨勫唴瀛樿嚜宸卞厛缂撳瓨浣忥紝寰呭け鏁堟湡鍚庢墠閲婃斁锛岄偅杩欐牱閫犳垚鐨勭粨鏋滄槸浠€涔堝憿锛熷氨鏄棭鏈熺殑 Go 绋嬪簭鐨勫唴瀛樻垚鏈緢楂樸€傚亣璁剧▼搴忎竴涓� sidecar 绋嬪簭鐨勮祫婧愰檺鍒舵槸鍐呭瓨2G锛孋PU 鏍告暟鏄� 2 鏍革紝鐢ㄨ繖鏍蜂竴涓唴瀛樼鐞嗗簱锛屽唴瀛樼敤瀹屼笉閲婃斁缁欐搷浣滅郴缁燂紝閭d箞娌′汉鏁㈢敤杩欎釜椤圭洰锛屽綋鐒舵渶鏂扮殑 Go 鍐呭瓨绠$悊鍣ㄦ槸缁忚繃瀹屽叏閲嶆瀯鐨勶紝铏界劧涔熷尯鍒嗕笉鍚屽ぇ灏� span 鐨勫唴瀛樺湪 P 绾у埆鍜屽叏灞€绾у埆杩涜缂撳瓨锛屼絾鏄熀鏈笂涓嶇敤鑰冭檻杩欑鍐呭瓨鑶ㄨ儉涓嶅彲鎺х殑闂浜嗐€傞偅涔堜粈涔堟儏鍐典笅浣跨敤鍐呭瓨姹犲憿锛熶綘纭畾浣犵殑涓氬姟鏈変竴浜涘璞℃槸棰戠箒鐨勫鐢ㄥ垯鍙互灏濊瘯浣跨敤銆� 鐩墠澶ч儴鍒嗗唴瀛樻睜鎶€鏈簳灞備緷璧栫殑搴曞骇閮芥槸 sync.Pool锛岃嚜宸卞啓涓€涓篃涓嶉毦銆傝€屼笖 Go 1.13 涔嬪悗鐨� sync.Pool 宸茬粡鍙互鍋氬埌璺� GC span 涓嶉噴鏀剧紦瀛樺璞★紝闈炲父涔嬪ソ銆偮犅� - -2\. 瀹氭椂鍣ㄣ€侴o 璇█鏃╂湡瀹氭椂鍣ㄥ洜涓烘暣浣撲娇鐢ㄤ竴鎶婂ぇ閿佺殑缂樻晠鏁堢巼鏋佸樊锛屽綋鐒舵渶鏂扮殑灏辩浉褰撳ソ浜嗭紝閫氳繃姣忎釜 CPU 鏍镐笅涓€涓畾鏃跺櫒鐨勬柟娉曘€愮被浼间簬鍒嗙墖閿併€戝垎鏁d簡绔炰簤鍘嬪姏锛屼絾鏄緢澶氭儏鍐典笅杩樻槸鏈夌珵浜夊帇鍔涳紝濡傛灉瀵规椂闂寸簿搴﹁姹備笉楂樹釜浜哄缓璁湪鑷繁鐨勫簲鐢ㄤ腑鑷繁鍐欎竴涓畝鍗曠殑鏃堕棿杞疄鐜颁竴涓畾鏃跺櫒锛岄噴鏀� CPU 鍘嬪姏銆� - -3\. 缃戠粶鍐� buffer 鍚堝苟銆傚啓 buffer 鍚堝苟涓€鑸噰鐢� writev锛屼絾鏄� Go 璇█鐨� writev 鏈夊唴瀛樻硠闇查棶棰橈紝鎴戣繖杈逛竴涓礋璐� MOSN 寮€鍙戠殑鍚屼簨鍏冩€诲彂鐜扮殑銆備粬鍏堢粰 Go 璇█瀹樻柟鎻愪氦浜� PR锛岀劧鍚庡湪 MOSN 涓妸 writev 鎵旀帀鑷繁鍐欎簡涓€涓畝鍗曞ソ鐢ㄧ殑鍐� buffer 鍚堝苟鍙戦€佸疄鐜帮細閫氳繃 for 寰幆 10 娆′粠鍙戦€� channel 涓妸缃戠粶鍖呰鍙栧嚭鏉ョ劧鍚庡悎骞跺彂閫侊紝褰撶劧寰幆涓棿缃戠粶鍙戦€� channel 娌℃湁瓒冲鐨勭綉缁滃寘灏遍€氳繃 \`select-default\` 鍒嗘敮绔嬪嵆閫€鍑哄惊鐜€� - -**channel 浣跨敤** - -Go 璇█鏄竴涓€傚悎澶勭悊 IO 瀵嗛泦鍨嬩换鍔$殑璇█锛屼笉鎿呴暱澶勭悊 CPU 瀵嗛泦鍨嬩换鍔★紝鍏跺唴瀛橀€氫俊鐨勫熀纭€灏辨槸 channel銆俢hannel 鏁翠綋鐨勫唴瀛樺熀纭€鏄竴涓� ring buffer 鏁扮粍鍜屼竴涓� lock锛屽鍔犲叾浠栦竴浜涜鍐欓€氱煡闃熷垪绛夛紝涔熸槸鍥犱负涓€鎶婂ぇ閿佺殑缂樻晠锛屽垯 buffer 鍨� channel 濡傛灉浣跨敤涓嶅綋鍒欐晥鐜囦笉浼氬緢楂橈紝濡傛瘡涓� channel element 鐨勫唴瀛樹娇鐢ㄨ繃澶с€俢hannel 杩樻湁涓€涓� closed 瀛楁锛岀敤浜庡垽瀹� channel 鐨勫啓鏄惁琚叧闂帀锛孏o 璇█瀵瑰叾鎿嶄綔鏄互鍘熷瓙閿佹柟寮忚繘琛岀殑锛屽緢澶氫汉浠ヨ繖涓瓧娈典负鍩虹杩涜淇″彿閫氱煡锛屽鏋滀娇鐢ㄤ笉褰撳緢鍙兘閫犳垚 for 寰幆 CPU 100% 鐨勯棶棰橈紝鎵€浠ュ湪 for-select 寰幆涓壒鍒璋ㄦ厧浣跨敤锛宒ubbogo 鍦ㄨ繖鏂归潰韪╄繃鍧戙€� - -**04** - -**鏈嶅姟娌荤悊** - -涓嬮潰涓哄ぇ瀹惰涓€涓嬫湇鍔℃不鐞嗭紝璇村埌鏈嶅姟娌荤悊锛屽叾瀹炴渶閲嶈鐨勮繕鏄湇鍔″彂鐜板拰鏈嶅姟娉ㄥ唽锛岃繖鍧楅€昏緫璺� Dubbo 绫讳技锛岃繖娆′笉浣滃睍寮€銆備笅闈富瑕佸寘鍚袱鏂归潰鐨勫唴瀹癸紝鍒嗗埆鏄檺娴佺畻娉曞拰浼橀泤閫€鍑恒€� - -**闄愭祦绠楁硶** - -闄愭祦绠楁硶棣栧厛闇€瑕佽€冭檻闄愭祦鐨勫璞★紝dubbogo 闇€瑕佽€冭檻 interface 鍜� method銆傚叾娆℃槸闄愭祦鏂规硶锛岄鍏堥渶瑕佽€冭檻鐨勬槸鍗曟満闄愭祦杩樻槸闆嗙兢闄愭祦锛屽崟鏈洪檺娴佺畻娉曞緢澶氾紝璀甯哥敤鐨勫浐瀹氱獥鍙g畻娉曞拰婊戝姩绐楀彛绠楁硶锛屼互鍙婃洿杩涗竴姝ョ殑鑷€傚簲闄愭祦銆傞檺娴佹椂涓€涓噸瑕侀棶棰樺氨鏄檺娴佸弬鏁版槸寰堥毦閰嶇殑锛岃濡傜嚎涓婃湇鍔″埌搴曢渶瑕佷娇鐢ㄥ灏戞満鍣ㄨ祫婧愬悎鐞嗭紝闄愭祦绐楀彛鐨勬椂闂寸獥鍙f椂闀垮簲璇ュ闀垮悎閫傦紝鍏� qps 鍊艰缃灏戝悎閫傚憿锛熻繖閮芥槸 dubbogo 闇€瑕佽В鍐崇殑闂銆傚厛杩涘璋锋瓕鐨� BBR 绠楁硶锛屽彲浠ュ湪褰撳墠鐨勭綉缁滅幆澧冩伓鍖栧墠涓嶆柇灏濊瘯鏀硅繘鐩稿叧鍙傛暟锛岀洿鍒板皾璇曞嚭涓€娈垫椂闂村唴鐨勬渶浣冲弬鏁般€傝繕鏈変竴浜涗笟鍔″舰鎬佷笅鐨勯檺娴侊紝濡傞拡瀵逛細鍛樺拰闈炰細鍛樺垎鍒璁′笉鍚岀殑闄愭祦閾捐矾銆� - -Dubbo 鐨勯檺娴佹帴鍙f簮鐮佸涓嬶細 - -聽 聽 聽 聽 聽 聽 聽 - -杩欎釜鎺ュ彛鎶借薄鏄潪甯告紓浜殑锛岀涓€涓槸闄愭祦 url锛岀浜屼釜鏈嶅姟璋冪敤銆備笅闈㈡槸 Dubbo 鐨勫浐瀹氱獥鍙i檺娴佹簮鐮侊細 - -聽 聽 聽 聽 聽 聽 聽 - -涓婇潰鐨勪唬鐮佸緢鏄庢樉锛�"private final" 鍐冲畾浜� Dubbo 浣跨敤鑰呭彧鑳戒娇鐢ㄦ湡缁欏畾鐨勫浐瀹氱獥鍙i檺娴侀檺绠楁硶锛屾棤娉曟墿灞曘€� - -浠ヤ笅鏄� dubbogo 鐨勯檺娴佹帴鍙o細 - -聽 聽 聽 聽 聽 聽 聽 - -TpsLimiter 鏄檺娴佸璞★紝TpsLimitStrategy 鏄檺娴佺畻娉曪紝RejectedExecutionHandle 鏄檺娴佸姩浣溿€� - -鎺ヤ笅鏉ユ槸涓€涓浐瀹氱獥鍙g畻娉曞疄鐜帮細 - -聽 聽 聽 聽聽 聽 聽 聽 - -涓婂浘鏄� dubbogo 鐨勫浐瀹氱獥鍙g畻娉曞疄鐜帮紝鍏堕潪绾跨▼瀹夊叏锛屽ぇ瀹剁湅涓€涓嬩唬鐮佸氨鍙互浜嗭紝涓嶆帹鑽愬ぇ瀹剁敤銆備笅鍥炬槸 dubbogo 鐨勬粦鍔ㄧ獥鍙g畻娉曞疄鐜帮細 - -聽 聽 聽 聽聽 聽 聽 聽聽 - -鍏跺熀鏈師鐞嗘槸鐢ㄤ竴涓槦鍒楀瓨鍌ㄤ竴娈垫椂闂村唴鐨勮姹傦紝鐒跺悗鏍规嵁闃熷垪闀垮害鍒ゅ畾鍗冲彲銆� - -涓嶇鏄浐瀹氱獥鍙h繕鏄粦鍔ㄧ獥鍙o紝鍏跺垽瀹氱畻娉曠畝鍗曪紝楹荤儲鐨勬槸鍏跺弬鏁拌缃紝濡備笅鍥撅細 - -聽 聽 聽 聽聽 聽 聽 聽 - -鍥哄畾绐楀彛鏃堕暱绮惧害寰堥毦鎺у埗銆傛瘮濡傝闄愭祦涓€绉� QPS 鍊� 1000锛屽墠 100 姣鏉ヤ簡涓€鍗冧釜璇锋眰锛岀劧鍚庡垽瀹氱畻娉曟妸璇锋眰鏀捐繃浜嗭紝鑰屽叾鍚� 900 姣 浠讳綍璇锋眰閮芥棤娉曞鐞嗐€備竴鑸殑澶勭悊鏂规硶鏄妸鏃堕棿绮掑害鏇寸簿缁嗕竴浜涳紝dubbogo 鐨勬椂闂寸獥鍙f渶灏忓崟浣嶆槸涓€姣锛屽垯鐢ㄦ埛鍙互鎶婃椂闂寸獥鍙h瀹氫负 100 姣锛屾€讳綋鏉ヨ涓€娈垫椂闂村唴鏄緢骞崇ǔ鐨勩€備笅闈㈣繖涓浘鏄垜浠ぞ鍖虹殑 commiter 閭撴槑鍐欏畬鍗氬鍙戝嚭鏉ワ紝琛屼笟澶т浆寰俊璇勮濡備笅锛� - -聽 聽 聽 聽 聽 聽 聽 - -鍥句腑绗竴涓棶棰樻槸 qps 鍜� tps 姣忎釜璇锋眰鎴愭湰涓嶅悓锛岃繖涓棶棰樻€庝箞澶勭悊鍛紵涓汉瑙夊緱杩欐槸涓€涓垎绾ч檺娴侀棶棰橈紝鍦ㄥ悓涓€涓湇鍔′笅閽堝涓嶅悓鐨勮姹傚仛涓嶅悓鐨勫垎绾у鐞嗐€傜浜屼釜闂 鈥濋厤缃簡 qps 1000锛屼絾鏄姹傝繃鏉ユ槸10涓囦綘杩樻槸姝烩€滐紝杩欎釜灏遍渶瑕佹洿涓婂眰鐨勮繍缁磋兘鍔涜繘琛屽簲瀵癸紝璀鍒ゅ畾涓烘伓鎰忔祦閲忔敾鍑诲氨搴旇鍦ㄧ綉鍏冲眰鎷︽埅鎺夛紝濡傛灉鏄湇鍔¤兘鍔涗笉琛屽氨鎵╁銆� - -閽堝鍒嗙骇闄愭祦锛宒ubbogo 鐩墠灏氭棤娉曞湪鍚屼竴涓繘绋嬪唴瀹屾垚锛岃繖闇€瑕� dubbogo 鐨勯厤缃腑蹇冩洿瀹屽杽浠ュ悗杩涜澶勭悊锛岀敤鎴峰彲浠ラ€氳繃鎼缓涓嶅悓鐨勬湇鍔¢摼璺鐞嗕箣銆傝濡備細鍛�/闈炰細鍛樺垎绾э紝鍚屼竴涓湇鍔¢拡瀵逛笉鍚岀殑浼氬憳绛夌骇鎼缓鐩稿簲鐨勯摼璺紝鍦ㄧ綉鍏冲眰灏卞垽瀹氫竴涓� userID 鏄惁鏄細鍛橈紝鐒跺悗鍙戦€佷笉鍚岀殑閾捐矾銆� - -dubbogo 鐨勫崟鏈虹啍鏂槸鍩轰簬 hystrix-go 瀹炵幇鐨勶紝鍏跺垽瀹氬弬鏁版湁鏈€澶у苟鍙戣姹傛暟銆佽秴鏃舵椂闂淬€侀敊璇巼锛涘叾娆℃槸淇濇姢绐楀彛锛屾槸鐔旀柇鏃堕暱锛岀啍鏂涔呭悗杩涜鏈嶅姟鎭㈠锛涚涓変釜鏄繚鎶ゆ€у姩浣滐紝灏辨槸鍦ㄤ繚鎶ゆ椂闂寸獥鍙d箣鍐呮墽琛屼粈涔堟牱鐨勫姩浣滐紝鍏蜂綋瀹炵幇鐢ㄦ埛鑷畾涔夈€� - -聽 聽 聽 聽聽 聽 聽 聽 - -**浼橀泤閫€鍑�** - -浼橀泤閫€鍑轰篃鏄倱鏄庡悓瀛︾殑澶т綔锛屽彲浠ュ湪缃戠粶涓婃悳鍒扮浉鍏冲崥瀹€€傚疄鐜颁紭闆呴€€鍑虹殑姝ラ鏈夛細 - -1. 鍛婄煡娉ㄥ唽涓績锛屾湇鍔″嵆灏嗗叧闂紝姝ゆ椂绛夊緟骞跺鐞嗚姹傦紱 - -2. 娉ㄥ唽涓績閫氱煡鍒殑瀹㈡埛绔紝鍒殑瀹㈡埛绔仠姝㈠彂閫佹柊璇锋眰锛岀瓑寰呭凡鍙戣姹傜殑鍝嶅簲锛� - -3. 鑺傜偣澶勭悊瀹屾墍鏈夋帴鏀跺埌鐨勮姹傚苟涓旇繑鍥炲搷搴斿悗锛岄噴鏀句綔涓烘湇鍔$鐩稿叧鐨勭粍浠跺拰璧勬簮锛� - -4. 鑺傜偣閲婃斁浣滀负瀹㈡埛绔殑缁勪欢鍜岃祫婧愩€� - - -聽聽 聽 聽 聽聽 聽 聽 聽 - -鎵€浠ユ瘡涓€姝ュ熀鏈笂閮借缁欑▼搴忎竴瀹氱殑鏃堕棿杩涜绛夊緟锛屾墍浠ョ瓑鐨勬椂闂寸獥鍙f槸澶氬皯鍛紵dubbogo 榛樿姣忎釜姝ラ澶ф鑺�2绉掞紝鎬讳綋涓€涓椂闂寸獥鍙f槸10绉掋€� - -聽 聽 聽 聽 聽 聽 聽 - -鍩烘湰涓婂湪鍒殑 RPC 妗嗘灦閲岄潰锛屽彲鑳戒笉澶父瑙佸埌杩欑澶勭悊銆� - -**05** - -**Dubbogo 涓婁簯 -** - -聽聽 - -dubbogo 浣滀负寰湇鍔℃鏋跺浣曢€傞厤 k8s锛屽浣曢儴缃诧紵dubbogo 鏈韩鏄竴涓� RPC 妗嗘灦锛屼絾鏄叾鍙堟湁浜嗘湇鍔℃不鐞嗚兘鍔涳紝杩欓儴鍒嗚兘鍔涗笌 k8s 鐨勯儴鍒嗚兘鍔涙湁浜涢噸鍚堬紝涓嶅彲鑳戒负浜嗛€傞厤 k8s 灏卞交搴曟姏寮冦€傜洰鍓� Dubbo 瀹樻柟涔熸病鏈夊緢濂界殑瑙e喅鏂规渚涙垜浠弬鑰冿紝鎵€浠ヨ繖閲屾垜浠� dubbogo 鍏堢粰鍑轰竴涓畝鍗曠殑甯歌瘑鎬х殑瀹炶返鏂规銆備笅闈㈠厛鍒嗘瀽涓� dubbogo 鐨� interface/service 鍜� k8s service 涓よ€呯洿鎺ョ殑宸埆銆� - - - -聽 聽 聽 - -k8s service 鏄澶氬叿鏈夌浉鍚屾湇鍔¤兘鍔� pod 璧勬簮鐨勮仛鍚堬紝瀹冭嚜宸辩殑璐熻浇鍧囪 绠楁硶浠ュ強鍋ュ悍妫€鏌ョ瓑鍔熻兘銆傝€� Dubbo 閲岄潰鐨� interface/service 浠呬粎鏄湇鍔� provider 闆嗗悎锛屾湇鍔℃不鐞嗚兘鍔涗緷璧� dubbo 鐨� directory銆乺outer 鍜� loadbalace 绛夐澶栫殑鍔熻兘妯″潡銆傚苟涓擠ubbo 鏈嶅姟鍖哄垎 group/version锛岃繕鏈� provider銆乧onsumer 瑙掕壊绛夌瓑銆侱ubbo interface/service 鏃犳硶涓� k8s service 瀵规爣锛孌ubbo interface/service 鍜屽叾鏁翠綋鏈嶅姟娌荤悊鑳藉姏鎵嶈兘瀵规爣鎴� k8s service銆備簩鑰呭樊寮傝繖涔堝ぇ锛屽浣曞皢 dubbo 闆嗘垚鍒� k8s 涓憿锛� - -k8s 鎻愪緵浜� pod/endpoint/service 涓夊眰缁村害鐨勮祫婧愩€傜畝鍗曠殑鍋氭硶锛屽彲浠ラ€氳繃鐩戝惉pod/endpoint/service 涓夊眰缁村害璧勬簮鐨勪簨浠讹紝浣滃嚭鍚堢悊鐨勫鐞嗕互杈惧埌鏈嶅姟娌荤悊鐨勭洰鐨勩€傜洰鍓嶆垜浠ぞ鍖烘垚鍛樼帇缈旀彁浜や簡涓€涓熀浜庣洃鍚� pod 浜嬩欢鏉ュ疄鐜版湇鍔℃不鐞嗙殑 pr锛屼紭鐐瑰氨鏄笉闇€瑕佸紩鍏ラ澶栫粍浠讹紝閫氳繃鐩戝惉 k8s 涓渶缁嗙矑搴﹁祫婧� pod 鐨勪簨浠讹紝閫氳繃 k8s apiserver 鑾峰彇 pod 鍒楄〃锛屽彧鏄€氳繃 apiserver 浣跨敤 etcd 鐨勬湇鍔℃敞鍐屽拰鏈嶅姟閫氱煡鑳藉姏锛屽叾浠栫户缁娇鐢� Dubbo 鐨勬湇鍔℃不鐞嗚兘鍔涖€傚叾浼樼偣鏄ā鍨嬬畝鍗曪紝涓嶉渶瑕佸疄鐜伴澶栫殑妯″潡锛屽嚑涔庝笉闇€瑕佸 Dubbo 浣滃嚭鏀瑰姩锛岀己鐐瑰氨鏄叾瀹炴棤娉曚娇鐢� k8s 鑷繁鐨勫仴搴锋鏌ヨ兘鍔涳紝闇€瑕佽嚜宸辩洃鍚緢缁嗙矑搴︾殑 pod 浜嬩欢鏉ョ患鍚堝鐞嗘湇鍔″仴搴枫€佹湇鍔′笂涓嬬嚎绛夋儏鍐碉紝鑰屼笖杩樺瓨鍦ㄦ病鏈変娇鐢� k8s service 鐨勪簨浠剁洃鍚兘鍔涳紝姣忎釜 consumer 鍐椾綑鐩戝惉涓€浜涗笉蹇呰鐩戝惉鐨勪簨浠讹紝鍔犲ぇ apiserver 鐨勭綉缁滃帇鍔涖€傛墍浠ュ叾瀹炵幇鐩墠鏉ョ湅鍙兘杩樹笉鏄渶浼樿В锛屼笌 k8s 寤鸿鐨刼perator 鏂瑰紡涔熸湁涓€瀹氱殑鑳岀銆傜ぞ鍖虹洰鍓嶈繕鍦ㄨ璁烘柊鏂规锛屽姹� k8s 鏈€浼樿В锛屽ぇ閮ㄥ垎浜哄€惧悜浜庨噰鐢� k8s 绀惧尯鎺ㄨ崘鐨� operator 鏂规锛屼絾鏄叾寮€鍙戝拰绾夸笂缁存姢鎴愭湰灏变笂鍗囦簡銆傚悗闈袱绉嶆柟寮忎細鍏卞瓨锛屼娇鐢ㄨ€呰浠佽鏅恒€� - -**06** - -**浜掕瀺浜掗€�** - -聽聽 - -鍏充簬浜掕瀺浜掗€氾紝Dubbo 鏄庡勾鏈変釜涓変釜閲嶈鐩爣锛屽叾涓竴涓洰鏍囨槸涓庡闈㈢殑寰湇鍔$敓鎬佽繘琛屼簰鑱斾簰閫氾紝姣斿璇磋窡 grpc 浜掗€氥€傜洰鍓� dubbo 鐨� grpc 鐨勮В鍐虫柟妗堝凡缁忓紑鏀惧嚭鏉ワ紝dubbogo 涓� grpc 浜掗€氱殑寮€鍙戝伐浣滀篃鍑犺繎瀹屾垚銆� - -涓嬮潰宸﹁竟 dubbogo 鐨勪唬鐮佺敓鎴愬櫒宸ュ叿鏍规嵁 grpc 鐨� pb 鏈嶅姟瀹氫箟鏂囦欢鑷姩鐢熸垚鐨勯€傞厤 dubbogo 鐨勪唬鐮侊紝鍙宠竟鏄搴旂殑浣跨敤绀轰緥銆備笉鍚屼簬 k8s service 鐨勫鏉傛€э紝grpc 鏁翠綋浠呬粎鍏锋湁 rpc 鑳藉姏锛屾病鏈夋湇鍔℃不鐞嗚兘鍔涳紝鎵€浠ュ師濮嬬殑 grpc 灏卞彲浠ュ緢濂界殑宓屽叆鍒� dubbogo 閲岄潰锛実rpc server 鐨� methodhandler 瀵规垜浠� dubbogo 鏉ヨ灏辨槸 dubbo invoker锛実rpc 鐨勪竴浜涚浉鍏崇殑鎺ュ彛鐩存帴璺熸垜浠殑鎺ュ彛宓屽璧锋潵锛屼袱涓敓鎬佸氨瀵规帴璧锋潵浜嗐€� - -聽聽 聽 聽 - -**07** - -**灞曟湜鏈潵 -** - - - -鏈€鍚庡氨鏄睍鏈涙湭鏉ワ紝涔熷氨鏄槑骞寸殑瑙勫垝銆� - - - -聽 聽 聽 - -鏄庡勾鎴戜滑灏嗕細寰堝揩瀹炵幇 dubbo router銆傜ぞ鍖哄湪 8鏈堜唤宸茬粡瀹炵幇浜� router 鍔熻兘闇€瑕佺殑搴曞眰鐨勭畻娉曟ā鍧楋紝浣嗘槸褰撴椂閰嶇疆涓績涓嬪彂鐩稿叧鐨勫弬鏁扮殑鑳藉姏杩樹笉鏄緢寮猴紝鎵€浠ユ病鏈夋渶缁堝畬鎴愩€傛渶杩戞湇鍔℃不鐞嗛厤缃垰鍒氭敮鎸佷簡 zookeeper 鍜� apollo锛岄璁″緢蹇氨鍙互灏� router 鐨勫弬鏁伴€氳繃閰嶇疆涓績涓嬪彂鐨勫舰寮忔敮鎸佹帀銆傚彟澶栵紝杩樻湁 tracing锛屾垜浠皢浼氬紩鍏ョぞ鍖轰富娴佺殑 tracing 鏂规锛屼互 opentracing 涓烘爣鍑嗭紝鍘婚泦鎴� opentracing 寮€婧愮敓鎬佺殑鐩稿叧鑳藉姏銆傜涓変釜鏄� kubernetes operator锛岃繖涓氨鏄垰鎵嶈鐨� K8s 鐨勬湇鍔¤皟鐢紝鎴戜滑浼氬熀浜� operator 鐨勬柟妗堝仛涓€鐗堟柊鐨勫熀浜� k8s 鐨勬敞鍐屼腑蹇冨疄鐜般€傛渶鍚庡氨鏄簯鍘熺敓鐢熸€佺殑铻嶅叆锛屽嵆涓� istio 鐨勯泦鎴愶紝dubbogo 灏嗕細鎴愪负 dubbo 鍦� service mesh 鐢熸€佷腑鐨勯噸瑕佽鑹层€� - -鐩墠 dubbogo 椤圭洰锛屼粖骞存槸鑳� run 璧锋潵锛岃川閲忔柟闈㈣繕鏈夊緢澶氬伐浣滆鍋氾紝鍔熻兘鍩烘湰涓婂埌鏄庡勾鍙笌 dubbo 2.7 琛ラ綈锛岀洰鍓嶅凡缁忓熀鏈鐢ㄣ€傜洰鍓嶈惤鍦板疄璺电殑鏄� 3 涓瘮杈冨吀鍨嬬殑鍏徃锛屼竴涓槸鎼虹▼锛岃繕鏈変竴涓槸娑傞甫鏅鸿兘銆� - -dubbogo 鏈韩鏄竴涓� go 璇█椤圭洰锛屼篃鏈熷緟涓庡叾浠� go 绀惧尯鐨勬寚姝f垨鑰呴渶姹傦紝涓€璧锋垚闀裤€� \ No newline at end of file diff --git a/doc/md/config-center/how-to-implement-remote-configuration-management-in-dubbo-go.md b/doc/md/config-center/how-to-implement-remote-configuration-management-in-dubbo-go.md deleted file mode 100644 index 55356f286dcc903635321f18df1ce779d934167e..0000000000000000000000000000000000000000 --- a/doc/md/config-center/how-to-implement-remote-configuration-management-in-dubbo-go.md +++ /dev/null @@ -1,274 +0,0 @@ -# [dubbo-go 涓浣曞疄鐜拌繙绋嬮厤缃鐞嗭紵](https://blog.csdn.net/weixin_39860915/article/details/104548947) - -2020-02-27 20:00:00 - -涔嬪墠鍦� Apache/dubbo-go锛堜互涓嬬畝绉� dubbo-go 锛夌ぞ鍖轰腑锛屾湁鍚屽甯屾湜閰嶇疆鏂囦欢涓嶄粎鍙互鏀句簬鏈湴锛岃繕鍙互鏀句簬閰嶇疆绠$悊涓績閲屻€傞偅涔堬紝鏀惧湪鏈湴鍜岄厤缃鐞嗕腑蹇冪┒绔熸湁鍝簺涓嶄竴鏍峰憿锛� - -鏀惧湪鏈湴锛屾瘡娆℃洿鏂伴渶瑕侀噸鍚紝閰嶇疆鏂囦欢绠$悊鍥伴毦锛屾棤娉曞仛鍒板疄鏃舵洿鏂板嵆鍒荤敓鏁堛€傛澶栵紝鏈湴鏂囦欢杩樹緷璧栦汉宸ョ増鏈帶鍒讹紝鍦ㄥ井鏈嶅姟鐨勫満鏅笅锛屽ぇ澶х殑澧炲姞浜嗚繍缁寸殑鎴愭湰涓庨毦搴︺€� - -鑰岄厤缃鐞嗕腑蹇冩彁渚涗簡缁熶竴鐨勯厤缃枃浠剁鐞嗭紝鏀寔鏂囦欢鏇存柊銆佸疄鏃跺悓姝ャ€佺粺涓€鐗堟湰鎺у埗銆佹潈闄愮鐞嗙瓑鍔熻兘銆� - -# **鐩爣** - -* * * - -鍩轰簬浠ヤ笂鍑犱釜鑳屾櫙锛屽彲浠ユ€荤粨鍑轰互涓�**鐩爣** - -* 涓� Dubbo 鐜版湁鐨勯厤缃腑蹇冨唴鐨勯厤缃枃浠跺吋瀹癸紝闄嶄綆鏂板璇█鏍堢殑瀛︿範鎴愭湰锛� - -* 鏀寔澶氱閰嶇疆鏂囦欢鏍煎紡锛� - -* 鏀寔涓绘祦閰嶇疆涓績锛岄€傚簲涓嶄竴鏍风殑浣跨敤鍦烘櫙锛屽疄鐜伴珮鎵╁睍鐨勯厤缃笅鍙戯紱 - - -# **閰嶇疆涓績** - -* * * - -閰嶇疆涓績鍦� dubbo-go 涓富瑕佹壙鎷呬互涓嬪満鏅殑鑱岃矗锛� - -1銆佷綔涓哄閮ㄥ寲閰嶇疆涓績锛屽嵆瀛樺偍 dubbo.properties 閰嶇疆鏂囦欢锛屾鏃讹紝key 鍊奸€氬父涓烘枃浠跺悕濡� dubbo.properties , value 鍒欎负閰嶇疆鏂囦欢鍐呭銆� - -2銆佸瓨鍌ㄥ崟涓厤缃」锛屽鍚勭寮€鍏抽」銆佸父閲忓€肩瓑銆� - -3銆佸瓨鍌ㄦ湇鍔℃不鐞嗚鍒欙紝姝ゆ椂 key 閫氬父鎸夌収 鈥滄湇鍔″悕 + 瑙勫垯绫诲瀷鈥� 鐨勬牸寮忔潵缁勭粐锛岃€� value 鍒欎负鍏蜂綋鐨勬不鐞嗚鍒欍€� - -灏辩洰鍓嶈€岃█锛宒ubbo-go 棣栬鏀寔鐨勬槸 Dubbo 涓敮鎸佺殑寮€婧愰厤缃腑蹇冿紝鍖呮嫭锛� - -1銆丄pollo 锛氭惡绋嬫鏋堕儴闂ㄧ爺鍙戠殑鍒嗗竷寮忛厤缃腑蹇冿紝鑳藉闆嗕腑鍖栫鐞嗗簲鐢ㄤ笉鍚岀幆澧冦€佷笉鍚岄泦缇ょ殑閰嶇疆锛岄厤缃慨鏀瑰悗鑳藉瀹炴椂鎺ㄩ€佸埌搴旂敤绔紝骞朵笖鍏峰瑙勮寖鐨勬潈闄愩€佹祦绋嬫不鐞嗙瓑鐗规€э紝閫傜敤浜庡井鏈嶅姟閰嶇疆绠$悊鍦烘櫙銆� - -2銆乑ooKeeper 锛氫竴涓垎甯冨紡鐨勶紝寮€鏀炬簮鐮佺殑鍒嗗竷寮忓簲鐢ㄧ▼搴忓崗璋冩湇鍔★紝鏄� Google 鐨� Chubby 涓€涓紑婧愮殑瀹炵幇锛屾槸 Hadoop 鍜� Hbase 鐨勯噸瑕佺粍浠躲€傚畠鏄竴涓负鍒嗗竷寮忓簲鐢ㄦ彁渚涗竴鑷存€ф湇鍔$殑杞欢锛屾彁渚涚殑鍔熻兘鍖呮嫭锛氶厤缃淮鎶ゃ€佸煙鍚嶆湇鍔°€佸垎甯冨紡鍚屾銆佺粍鏈嶅姟绛夈€� - -3銆丯acos : Alibaba 寮€婧愮殑閰嶇疆绠$悊缁勪欢锛屾彁渚涗簡涓€缁勭畝鍗曟槗鐢ㄧ殑鐗规€ч泦锛屽府鍔╂偍瀹炵幇鍔ㄦ€佹湇鍔″彂鐜般€佹湇鍔¢厤缃鐞嗐€佹湇鍔″強娴侀噺绠$悊銆� - -鑰岃€冭檻鍒版煇浜涘叕鍙稿唴閮ㄦ湁鑷韩鐨勭爺鍙戠殑閰嶇疆涓績锛屽張鎴栬€呭綋鍓嶆祦琛岃€� Dubbo 灏氭湭鏀寔鐨勯厤缃腑蹇冿紝濡� etcd锛屾垜浠殑鏍稿績鍦ㄤ簬璁捐涓€濂楁満鍒讹紝鍏佽鎴戜滑锛屼篃鍖呮嫭鐢ㄦ埛锛屽彲浠ラ€氳繃鎵╁睍鎺ュ彛鏂扮殑瀹炵幇锛屾潵蹇€熸帴鍏ヤ笉鍚岀殑閰嶇疆涓績銆� - -閭e湪 dubbo-go 涓┒绔熸€庝箞瀹炵幇鍛紵鎴戜滑鐨勭瓟妗堟槸锛�**鍩轰簬鍔ㄦ€佺殑鎻掍欢鏈哄埗鍦ㄥ惎鍔ㄦ椂鎸夐渶鍔犺浇閰嶇疆涓績鐨勪笉鍚屽疄鐜般€�** - -瀹炵幇璇ラ儴鍒嗗姛鑳芥斁缃簬涓€涓嫭绔嬬殑瀛愰」鐩腑锛岃锛� - -_https://github.com/apache/dubbo-go/tree/master/config\_center_ - -## **dubbo-go 璁捐** - -鍘熼€昏緫涓猴細鍚姩鏃惰鍙栨湰鍦伴厤缃枃浠讹紝灏嗗叾鍔犺浇杩涘唴瀛橈紝閫氳繃閰嶇疆鏂囦欢涓殑閰嶇疆璇诲彇娉ㄥ唽涓績鐨勪俊鎭幏鍙栨湇鍔℃彁渚涜€咃紝娉ㄥ唽鏈嶅姟娑堣垂鑰呫€� - -鏈変簺璇昏€呬細鏈夌偣鍥版儜锛屼笉鏄濂戒簡浣跨敤閰嶇疆涓績鐨勶紝涓轰粈涔堢幇鍦ㄥ張瑕佽鍙栨湰鍦伴厤缃憿锛熺瓟妗堝氨鏄紝璇诲彇鐨勮繖閮ㄥ垎淇℃伅鍒嗘垚涓ら儴鍒嗭細 - -* 浣跨敤浠€涔堜綔涓洪厤缃腑蹇冿紱 - -* 璇ラ厤缃腑蹇冪殑鍏冩暟鎹紝姣斿璇翠娇鐢� zookeeper 浣滀负閰嶇疆涓績锛岄偅涔� zookeeper 鐨勯摼鎺ヤ俊鎭氨鏄厓鏁版嵁锛屾瘯绔熸垜浠彧鏈夊湪鐭ラ亾浜嗛摼鎺ヤ俊鎭箣鍚庢墠鑳借繛涓� zookeeper锛� - - -鍦ㄦ敼閫犵殑鏃跺€欙紝闇€瑕佽€冭檻浠ヤ笅鐨勯棶棰橈細 - -**1銆佸浣曞疄鐜版敮鎸佸涓厤缃腑蹇冿紵濡備綍瀹炵幇鎸夐渶鍔犺浇锛�** - -閫氳繃鎶借薄 DynamicConfiguration 璁╁紑鍙戣€呭彲浠ュ揩閫熸敮鎸佸涓厤缃腑蹇冦€備娇鐢ㄨ€呭鍏ユ寚瀹氱殑缁勪欢鍖呭悗锛屽湪鍚姩闃舵灏嗛渶瑕佺殑缁勪欢鍔犺浇杩涘唴瀛樹腑锛屼互渚跨粰绋嬪簭鎸夐渶璋冪敤锛屽涓嬪浘缁胯壊閮ㄥ垎銆� - -**2銆侀厤缃腑蹇冪殑閰嶇疆鍔犺浇闃舵鍦ㄤ粈涔堟椂鍊欙紵** - -搴斿湪璇诲彇閰嶇疆鏂囦欢闃舵鍚庯紝璇诲彇骞惰В鏋愭湰鍦伴厤缃枃浠朵腑閰嶇疆涓績淇℃伅銆傚垵濮嬪寲閰嶇疆涓績閾炬帴锛岃鍙柭�/dubbo/config/dubbo/dubbo.properties 涓� /dubbo/config/dubbo/搴旂敤鍚�/dubbo.properties 锛屽苟灏嗗叾鍔犺浇鍒板唴瀛樹箣涓鐩栧師鏈夐厤缃紝鐩戝惉鍏跺彉鏇达紝瀹炴椂鏇存柊鑷冲唴瀛橈紝濡備笅鍥捐摑鑹查儴鍒�: - - - -### **ConfigCenterFactory** - -浣跨敤鑰呭姞杞藉搴旈厤缃腑蹇冩ā鍧楀悗锛屽湪鍒濆鍖栭樁娈靛姞鍏ュ悇閰嶇疆涓績妯″潡寰€鍏朵腑娉ㄥ唽鍏跺垵濮嬪寲绫汇€� - - - -### **DynamicConfigurationFactory** - -鏁翠釜鍔ㄦ€侀厤缃腑蹇冪殑鍏抽敭鐐瑰氨鍦� DynamicConfigurationFactory 涓婏紝鍏朵腑閫氳繃瑙f瀽鍐呴儴鑷畾涔夌殑 URL 锛岃幏鍙栧叾鍗忚绫诲瀷锛屽弽灏勫叾鍙傛暟锛岀敤浜庡垱寤洪厤缃腑蹇冪殑閾炬帴銆� - - - -濡傦細 - -閰嶇疆鏂囦欢涓厤缃細 - -```css -config_center: - protocol: zookeeper - address: 127.0.0.1:2181 - namespace: test -``` - -dubbo-go 鍐呴儴浼氳В鏋愪负锛� - -```javascript -zookeeper://127.0.0.1:2181?namespace=test -``` - -鍦ㄥ唴閮ㄤ紶閫掞紝鐢ㄤ簬鍒濆鍖栭厤缃腑蹇冮摼鎺ャ€� - -**PS锛�**鍦� dubbo-go 涓埌澶勫彲瑙佽繖绉嶅唴閮ㄥ崗璁紝閫忓交鐞嗚В杩欎釜鍐呴儴鍗忚瀵归槄璇� dubbo-go 浠g爜寰堟湁甯姪銆� - -### **DynamicConfiguration** - -璇ユ帴鍙h瀹氫簡鍚勪釜閰嶇疆涓績闇€瑕佸疄鐜扮殑鍔熻兘锛� - -* 閰嶇疆鏁版嵁鍙嶅簭鍒楀寲鏂瑰紡锛氱洰鍓嶅彧鏈� Properties 杞崲鍣紝鍙傝锛欴efaultConfigurationParser 銆� - -* 澧炲姞鐩戝惉鍣細鐢ㄤ簬澧炲姞鐩戝惉鏁版嵁鍙樺寲鍚庡鍔犵壒瀹氶€昏緫锛堝彈闄愪簬閰嶇疆涓績 client 绔疄鐜帮級銆� - -* 鍒犻櫎鐩戝惉鍣細鍒犻櫎宸叉湁鐩戝惉鍣紙鍙楅檺浜庨厤缃腑蹇� client 绔疄鐜帮紝鐩墠鎵€鐭� nacos client 娌℃湁鎻愪緵璇ユ柟娉曪級銆� - -* 鑾峰彇璺敱閰嶇疆锛氳幏鍙栬矾鐢辫〃閰嶇疆銆� - -* 鑾峰彇搴旂敤绾ч厤缃細鑾峰彇搴旂敤灞傜骇閰嶇疆锛屽锛氬崗璁被鍨嬮厤缃瓑銆� - - - - -## **瀹炵幇** - -* * * - - - -浼樺厛鑰冭檻涓庣幇鏈� Dubbo 璁捐鍏煎锛屼粠鑰岄檷浣庝娇鐢ㄨ€呯殑瀛︿範鎴愭湰锛宒ubbo-admin 浣滀负鏈嶅姟鎻愪緵鑰呭疄鐜板簲鐢ㄧ骇閰嶇疆绠$悊锛� dubbo-go 浣滀负娑堣垂绔疄鐜伴厤缃笅鍙戠鐞嗗姛鑳姐€備笅闈互 ZooKeeper 涓轰緥锛屽鏈嶅姟鎻愪緵鑰呬笌鏈嶅姟娑堣垂鑰呰繘琛屾暣浣撴祦绋嬪垎鏋愩€� - -### **濡備綍瀛樺偍閰嶇疆绠$悊** - -dubbo-admin 閰嶇疆绠$悊涓鍔� global 閰嶇疆锛孼ooKeeper 涓細鑷姩鐢熸垚鍏跺搴旈厤缃妭鐐癸紝鍐呭鍧囦负 dubbo-admin 涓缃殑閰嶇疆銆� - -1銆�/dubbo/config/dubbo/dubbo.properties 瀵瑰簲鍏ㄥ眬閰嶇疆鏂囦欢銆� - -2銆�/dubbo/config/dubbo/ 搴旂敤鍚� /dubbo.properties 瀵瑰簲鎸囧畾搴旂敤閰嶇疆鏂囦欢銆� - -#### **鑺傜偣璺緞** - -####  - -涓婂浘灞曠ず浜� dubbo.properties 鏂囦欢鍦� ZooKeeper 鍜� Apollo 涓殑瀛樺偍缁撴瀯锛� - -**ZooKeeper** - -* 鍛藉悕绌洪棿 namespace 閮戒负锛欴ubbo - -* 鍒嗙粍 group 锛氬叏灞€绾у埆涓� dubbo , 鎵€鏈夊簲鐢ㄥ叡浜紱搴旂敤绾у埆涓哄簲鐢ㄥ悕 demo-provider 锛屽彧瀵硅搴旂敤鐢熸晥 - -* key : dubbo.properties - - -**Apollo** - -* app\_id : 鑷敱鎸囧畾锛岄粯璁わ細dubbo 锛屾渶濂戒笌 zookeeper 聽namespace 涓€鑷� - -* cluster : 鑷敱鎸囧畾锛屾渶濂戒笌 zookeeper group 涓€鑷� - -* 鍛藉悕绌洪棿 namespace : dubbo.properties - - -ZooKeeper 涓� Apollo 鏈€澶х殑涓嶄竴鏍峰氨鍦ㄤ簬 dubbo.properties 鎵€鍦ㄧ殑鑺傜偣銆� - -### **瀹炵幇閰嶇疆绠$悊涓績鏀寔** - -浠� Apollo 涓轰緥锛岀畝鍗曠殑浠嬬粛锛屽浣曞疄鐜版敮鎸佷竴涓柊鐨勯厤缃鐞嗕腑蹇冦€� - -#### **閫夋嫨閰嶇疆绠$悊涓績 Client / SDK** - -鏈緥涓娇鐢ㄧ殑 Apollo Go Client 涓猴細https://github.com/zouyx/agollo 銆� - -**PS:** 濡傛病鎵惧埌锛岃嚜宸卞疄鐜颁篃鏄彲浠ョ殑鍝︺€� - -#### **鑺傜偣璺緞** - -鍥犱负姣忎釜閰嶇疆绠$悊涓績鐨勫瓨鍌ㄧ粨鏋勫悇鏈夌壒鐐癸紝瀵艰嚧 Dubbo 鍦ㄤ娇鐢ㄥ閮ㄩ厤缃鐞嗕腑蹇冩椂锛屽瓨鍌ㄩ厤缃妭鐐圭殑缁撴瀯涓嶄竴鏍枫€傚湪 dubbo-configcenter 鎵惧埌甯屾湜鏀寔鐨勯厤缃鐞嗕腑蹇冿紝鑰屾湰渚嬩腑 Apollo 鍒欏湪 ApolloDynamicConfiguration.java 銆� - -娉ㄩ噴涓〃鏄庯紝Apollo namespace = governance (governance .properties) 鐢ㄤ簬娌荤悊瑙勫垯锛宯amespace = dubbo (dubbo.properties) 鐢ㄤ簬閰嶇疆鏂囦欢銆� - -#### **瀹炵幇聽DynamicConfiguration** - -鏂板缓鍒涘缓瀹㈡埛绔柟娉曪紝鏈€濂藉鎴风淇濇寔涓哄崟渚嬨€� - - - -浠ヤ笅涓哄繀椤诲疄鐜扮殑鏂规硶锛屼互涓嬫柟娉曠敤浜庤幏鍙栭厤缃腑蹇冮厤缃€� - -* GetInternalProperty锛氬湪閰嶇疆鏂囦欢锛圓pollo 涓� namespace锛変腑锛屾牴鎹� key 鑾峰彇瀵瑰簲 value锛� - -* GetRule锛氳幏鍙栨不鐞嗛厤缃枃浠讹紙Apollo 涓� namespace锛夛紱 - -* GetProperties锛氳幏鍙栨暣涓厤缃枃浠讹紙Apollo 涓� namespace锛夛紱 - - -鍙€夋嫨瀹炵幇鐨勬柟娉曪紝濡備笉瀹炵幇锛屽垯涓嶈兘鍔ㄦ€佹洿鏂� dubbo-go 涓厤缃俊鎭€� - -* RemoveListener - -* AddListener - - -鑰� Parser & SetParser 浣跨敤榛樿瀹炵幇鍗冲彲锛岄粯璁や负 Properties 杞崲鍣ㄣ€� - -鏇村淇℃伅锛屽弬鑰冿細dubbo-go-apollo 锛岃鎯呭弬鑰冿細 - -_https://github.com/apache/dubbo-go/tree/master/config\_center/apollo_ - -## **浣跨敤鏂规硶** - -浠庝笂闈㈢殑璁捐閲岄潰锛屼篃鑳藉ぇ姒傜寽鍒版€庝箞浣跨敤浜嗭細 - - - -寰堟樉鐒讹紝浣跨敤閰嶇疆涓績骞朵笉澶嶆潅锛屽彧闇€瑕佹妸瀵瑰簲鐨勪緷璧栧紩鍏ヨ繘鏉ャ€傚湪鍖呭垵濮嬪寲鐨勬椂鍊欙紝浼氬垱寤哄嚭鏉ュ搴旂殑閰嶇疆涓績鐨勫疄鐜般€傛瘮濡傝鍔犺浇 ZooKeeper 鎴栬€� Apollo 浣滀负閰嶇疆涓績锛� - -**ZooKeeper** - -```nginx -_ "github.com/apache/dubbo-go/config_center/zookeeper" -``` - -**Apollo** - -```nginx -_ "github.com/apache/dubbo-go/config_center/apollo" -``` - -褰撶劧浠呬粎鍔犺浇杩樹笉澶燂紝姣斿璇磋櫧鐒舵垜鍔犺浇浜� zookeeper锛屼絾鏄垜杩橀渶瑕佺煡閬撴€庝箞杩炰笂杩欎釜閰嶇疆涓績锛屽嵆鍓嶉潰鎻愬埌鐨勯厤缃腑蹇冪殑鍏冩暟鎹紝杩欓儴鍒嗕俊鎭槸闇€瑕佸湪鏈湴閰嶇疆鍑烘潵鐨勩€傛瘮濡傝锛� - -**ZooKeeper** - -```css -config_center: - protocol: "zookeeper" - address: "127.0.0.1:2181" -``` - -**Apollo** - -濡傛灉闇€瑕佷娇鐢� Apollo 浣滀负閰嶇疆涓績锛岃鎻愬墠鍒涘缓 namespace: dubbo.properties锛岀敤浜庨厤缃鐞嗐€� - -```properties -config_center: - protocol: "apollo" - address: "127.0.0.1:8070" - app_id: test_app - cluster: dev -``` - -# **鎬荤粨** - -* * * - -鏇村姞鍏蜂綋鐨勫疄鐜帮紝鎴戝氨涓嶈缁嗚杩帮紝澶у鍙互鍘荤湅婧愮爜锛屾杩庡ぇ瀹舵寔缁叧娉紝鎴栬€呰础鐚唬鐮併€� - -鏁翠釜閰嶇疆涓績鐨勫姛鑳斤紝楹婚泙铏藉皬锛屼絾浜旇剰淇卞叏銆傜洰鍓嶅苟涓嶇畻鏄崄鍒嗗畬鍠勶紝浣嗘槸鏁翠釜妗嗘灦灞傞潰涓婃潵璇达紝鏄蛋鍦ㄤ簡姝g‘鐨勮矾涓娿€備粠鎵╁睍鎬ф潵璇达紝鏄瘮杈冧究鍒┿€傜洰鍓嶆敮鎸佺殑閰嶇疆涓績杩樹笉澶熶赴瀵岋紝鍙湁 ZooKeeper 涓� Apollo 锛屾敮鎸佺殑閰嶇疆鏂囦欢鏍煎紡涔熷彧鏈� properties 锛岃櫧鐒惰兘婊¤冻鍩烘湰浣跨敤鍦烘櫙锛岃窛绂诲畬鍠勮繕鏈夎繕闀胯繙鐨勮矾銆� - -**鏈潵璁″垝锛�** - -* Nacos锛堢瓑寰呭彂甯� 锛� - -* etcd锛堟鍦ㄥ紑鍙戯級 - -* consul锛堟湭鏀寔锛� - -* 涓板瘜鐨勬枃浠堕厤缃牸寮忥紝濡傦細yml , xml 绛� - - -**鏈枃浣滆€咃細**閭规瘏璐わ紝Github ID @zouyx锛屽紑婧愮埍濂借€咃紝灏辫亴浜� SheIn 渚涘簲閾鹃儴闂紝璐熻矗渚涘簲閾惧紑鏀惧钩鍙般€� - -鏈枃缂╃暐鍥撅細icon by 鐢ㄦ埛7388492991 \ No newline at end of file diff --git a/doc/md/course/dubbo-go-application-dimension-registration-model.md b/doc/md/course/dubbo-go-application-dimension-registration-model.md deleted file mode 100644 index 62e4546eac33400f844ff17bbee7ac19dab9e390..0000000000000000000000000000000000000000 --- a/doc/md/course/dubbo-go-application-dimension-registration-model.md +++ /dev/null @@ -1,120 +0,0 @@ -# [Dubbo-go 搴旂敤缁村害娉ㄥ唽妯″瀷](https://xie.infoq.cn/article/a6a7e05f8a0d26c5f9f9bbd85) - -**鏈枃浣滆€咃細閭撴槑(Github flycash)钂嬭秴(Github @Patrick0308)** - -Dubbo 3.0 灏嗚嚦銆傚叾鏈€閲嶈鐨勪竴鐐瑰氨鏄湇鍔¤嚜鐪侊紝鍏跺熀纭€鍗虫槸搴旂敤缁村害鐨勬敞鍐屾ā鍨嬶紝浣滀负鐩墠涓� Dubbo 鍦ㄥ姛鑳戒笂瀹屽叏瀵归綈鐨� Dubbo-go锛屽凡浜� 鏈勾銆�2020 骞淬€�7 鏈堜唤鍙戝竷浜嗗叾 v1.5.0 鐗堟湰锛屽疄鐜颁簡璇ユā鍨嬶紝涓哄勾搴曞疄鐜颁笌 Dubbo 3.0 瀵归綈鐨勬柊鐗堟湰濂犲畾浜嗗熀纭€銆� - -Dubbo-go 浣滀负 Dubbo 鐨� Go 璇█鐗堟湰锛屽洜璺ㄨ瑷€涔嬫晠锛屼簩鑰呴拡瀵瑰悓涓€妯″瀷鐨勫疄鐜板繀鐒舵湁杈冨ぇ宸紓锛屾晠鏈枃娉ㄩ噸璁ㄨ Dubbo-go 绀惧尯鑷韩瀵硅妯″瀷鐨勭悊瑙e拰瀹炵幇锛屼互鍙婂叾涓� Dubbo 涔嬮棿鐨勫樊寮傘€� - -## 1 寮曡 - -鍦� v1.5 浠ュ墠锛孌ubbo-go 娉ㄥ唽妯″瀷閮芥槸浠ユ湇鍔′负缁村害鐨勶紝鐩磋鐨勭悊瑙e彲璁や负鍏舵槸鎺ュ彛缁村害銆傝濡傛敞鍐屼俊鎭紝鎸夌収鏈嶅姟缁村害妯″瀷鍏剁ず渚嬪涓嬶細 - -```json -"com.xxx.User":[ - {"name":"instance1", "ip":"127.0.0.1", "metadata":{"timeout":1000}}, - {"name":"instance2", "ip":"127.0.0.2", "metadata":{"timeout":2000}}, - {"name":"instance3", "ip":"127.0.0.3", "metadata":{"timeout":3000}}, -] -``` - -杩欑妯″紡鐨勫ソ澶勬槸涓嶈█鑰屽柣鐨勶紝绠€鍗曠洿瑙傦紝鎻愪緵浜嗙粏绮掑害鐨勬湇鍔℃帶鍒舵墜娈点€� - -鑰岃繎涓ゅ勾锛岄殢鐫€浜戞椂浠g殑鍒版潵锛岃繖绉嶆ā寮忓氨鏆撮湶浜嗕笉瓒筹細 - -涓绘祦鐨勬敞鍐屾ā鍨嬮兘鏄簲鐢ㄧ淮搴︾殑锛� - -浠ユ湇鍔$淮搴︽潵娉ㄥ唽锛岄偅涔堣妯′笌鏈嶅姟鏁伴噺鎴愭姣旓紝澶ц妯¢泦缇や箣涓嬶紝娉ㄥ唽涓績鍘嬪姏闈炲父澶э紱 - -## 2 Dubbo-go v1.5.0 鐨勬柊娉ㄥ唽妯″瀷 - -杩欐 Dubbo-go 鏀寔浜嗘柊鐨勬敞鍐屾ā鍨嬶紝涔熷氨鏄簲鐢ㄧ淮搴︾殑娉ㄥ唽妯″瀷銆傜畝鍗曡€岃█锛屽湪搴旂敤缁村害娉ㄥ唽涓嬶紝鍏舵敞鍐屼俊鎭被浼硷細 - -```jsoon -"application1": [ - {"name":"instance1", "ip":"127.0.0.1", "metadata":{}}, - {"name":"instance2", "ip":"127.0.0.2", "metadata":{}}, - {"name":"instanceN", "ip":"127.0.0.3", "metadata":{}} -] -``` - -鍦ㄦ妯″紡涔嬩笅锛屽彲浠ョ湅鍒版敞鍐屼俊鎭皢浼氬ぇ骞呭害鍑忓皯锛岄泦缇よ妯″彧涓庡疄渚嬫暟閲忕浉鍏炽€� - -涓庢鍚屾椂锛屽湪瀹炵幇杩欎竴涓姛鑳界殑鏃跺€欙紝Dubbo-go 杩樺笇鏈涗繚鎸佷袱涓洰鏍囷細 - -瀵圭敤鎴峰畬鍏ㄥ吋瀹癸紝鐢ㄦ埛杩佺Щ鏃犳劅鐭ワ紱 - -淇濇寔浣忓師鏈湇鍔$矑搴︿笂绮剧粏鎺у埗鐨勮兘鍔涒€斺€斿嵆淇濈暀鐜版湁鐨勬湇鍔$淮搴︾殑鍏冩暟鎹紱 - -鍥犳 Dubbo-go 瑕佺潃鍔涜В鍐充互涓嬪嚑鐐癸細 - -鐩墠 Consumer 鐨勯厤缃槸浠ユ帴鍙d负鍑嗙殑锛屽浣曟牴鎹帴鍙f壘鍒拌鎺ュ彛瀵瑰簲鐨勫簲鐢紵渚嬪锛岀敤鎴烽厤缃簡 com.xxx.User 鏈嶅姟锛岄偅涔堬紝Dubbo-go 鎬庝箞鐭ラ亾杩欎釜鏈嶅姟鏄敱鍝釜搴旂敤鏉ユ彁渚涚殑鍛紵 - -鍦ㄧ煡閬撲簡鏄摢涓簲鐢ㄤ箣鍚庯紝鍙互浠庢敞鍐屼腑蹇冩嬁鍒板簲鐢ㄧ殑娉ㄥ唽淇℃伅锛屽瀹炰緥淇℃伅绛夛紱閭f€庝箞鐭ラ亾 com.xxx.User 鏈嶅姟鑷韩鐨勫厓鏁版嵁鍛紵 - -涓轰簡瑙e喅杩欎袱涓棶棰橈紝鍦ㄥ凡鏈夌殑娉ㄥ唽妯″瀷鐨勫熀纭€涓婏紝Dubbo-go 寮曞叆涓や釜棰濆鐨勭粍浠讹細ServiceNameMapping 鍜� MetadataService銆� - -鍓嶈€呯敤浜庤В鍐虫湇鍔�-搴旂敤涔嬮棿鐨勬槧灏勶紝鍚庤€呯敤浜庤幏鍙栨湇鍔$殑鍏冩暟鎹€� - -鐢辨锛孌ubbo-go 鐨勫簲鐢ㄧ淮搴︽敞鍐屾ā鍨嬪氨鍙樹负锛� - - - -### 2.1 ServiceNameMapping - -ServiceNameMapping 骞朵笉澶嶆潅銆傝€冭檻鍒颁竴鑸汉鍦� Consumer 渚ф兂瑕佽皟鐢ㄤ竴涓湇鍔★紝鍏跺崄鏈夊叓涔濇槸鐭ラ亾杩欎釜鏈嶅姟鏄摢涓簲鐢ㄦ彁渚涚殑锛屼簬鏄� Dubbo-go 寮曞叆浜嗘柊鐨勯厤缃」 provideBy - - - -褰撶劧锛屾墍璋� 鈥滃崄鏈夊叓涔濃€濆氨鏄鏈変簺鏃跺€欑‘瀹炰笉鐭ラ亾鏄湇鍔℃槸璋佹彁渚涚殑锛屾墍浠� Dubbo-go 杩樻敮鎸佷簡鍩轰簬閰嶇疆涓績鐨� ServiceNameMapping 瀹炵幇銆侱ubbo-go 浼氱敤鏈嶅姟鍚嶄綔涓� Key 浠庨厤缃腑蹇冮噷闈㈣鍑哄搴旂殑搴旂敤鍚嶃€傝繖鎰忓懗鐫€, Provider 鍚姩鐨勬椂鍊欙紝涔熶細鍦ㄩ厤缃腑蹇冨皢鑷韩鐨� 鏈嶅姟-搴旂敤鍚嶆槧灏� 鍐欏叆閰嶇疆涓績銆� - -### 2.2 MetadataService - -MetadataService 绋嶅井瑕佸鏉備竴鐐癸紝鏈� remote 鍜� local 涓ょ妯″紡銆� - -绫讳技浜庡墠闈㈢殑 ServiceNameMapping锛孌ubbo-go 鎻愪緵浜嗗熀浜庨厤缃腑蹇冪殑 MetadataService 鐨勫疄鐜帮紝鍗� remote 妯″紡銆侾rovider 鍚姩鐨勬椂鍊欙紝灏变細灏嗘湇鍔$殑鍏冩暟鎹啓杩涘幓銆� - -鍙﹀涓€绉嶆ā寮忔槸 local 妯″紡銆侱ubbo-go 鍙互鐩存帴灏� MetadataService 鐪嬪仛鏄竴涓櫘閫氱殑寰湇鍔★紝鑰屽悗鐢� Provider 鎵€鎻愪緵銆傜被浼间簬锛� - - - -鐢辨甯︽潵涓€涓棶棰橈細 - -鏃㈢劧 Dubbo-go 灏� MetadataService 鐪嬪仛鏄竴涓櫘閫氱殑鏈嶅姟锛岄偅涔� MetadataService 鐨勫厓鏁版嵁锛孋onsumer 璇ユ€庝箞鑾峰緱鍛紵杩欐槸涓€涓吀鍨嬬殑楦$敓铔嬭泲鐢熼浮鐨勯棶棰樸€� - -Dubbo-go 鐨勬柟妗堥潪甯哥畝鍗曠矖鏆达紝Provider 鍚姩鐨勬椂鍊欙紝涓嶄粎浠呭線娉ㄥ唽涓績閲岄潰鍐欏叆搴旂敤鏈韩鐨勪俊鎭紝杩樿鎶婂畠鐨� MetadataService 淇℃伅鍐欏叆銆� - -杩欐槸涓€涓簲鐢ㄧ殑娉ㄥ唽淇℃伅锛� - - - -鏈川涓婃潵璇达紝搴旂敤缁村害娉ㄥ唽淇℃伅 + 鏈嶅姟鍏冩暟鎹� = 鏈嶅姟缁村害娉ㄥ唽淇℃伅銆傛垨鑰呰锛屽簲鐢ㄧ淮搴︽敞鍐岋紝鍙槸涓€绉嶉噸鏂扮粍缁囪繖浜涗俊鎭殑鏂瑰紡銆� - -## 3 宸紓涓庢敼杩� - -Dubbo-go v1.5.x 瀵规爣 Dubbo 2.7.5锛屽彲浠ヨ涓烘槸鍙傜収 Dubbo 2.7.5 鐩存帴瀹炵幇鍏� Go 婧愮爜锛屼絾鏄€冭檻鍒� Java 鍜� Go 涔嬮棿鐨勮瑷€宸紓锛屽鑷翠簩鑰呬箣闂寸殑瀹炵幇涓嶅彲鑳藉畬鍏ㄥ绛夈€� - -### 3.1 淇鐗堟湰鍙� revision 姣斿 - -Dubbo v2.7.x 鍦� MetadataService 娉ㄥ唽鏃讹紝浼氬鍏� provider 搴旂敤鐨勬墍鏈夋湇鍔℃帴鍙g殑 hash 鍊煎仛涓轰慨璁㈢増鏈彿鍐欏叆鍏冩暟鎹腑蹇冿紝姝� revision 鏄鎵€鏈夋帴鍙g殑鏂规硶浠ュ強鍏跺弬鏁版€讳綋鐨勮绠楃粨鏋溿€傚叾鐩殑鏄噺灏� consumer 绔埌娉ㄥ唽涓績鐨勬媺鍙栨鏁般€� - -鍦� Go 涓敤鐨勮绠� revision 鐨� hash 绠楁硶涓� Java 鏄笉涓€鑷寸殑锛岃€屼笖 Go 涓� Java 鐨勬柟娉曠鍚嶄俊鎭槸涓嶇浉鍚岀殑锛屾墍浠ヨ绠楀嚭鏉ョ殑 hash 鍊间竴瀹氭槸涓嶄竴鏍风殑銆� - -姝や笉涓€鑷翠細瀵艰嚧濡傛灉 Go 搴旂敤鍜� Java 搴旂敤鍚屾椂鍙戝竷鍚屼竴涓湇鍔$殑鏃跺€欙紝Go 鏈嶅姟鍜� Java 鏈嶅姟鐨勪慨璁㈢増鏈彿蹇呭畾鏄笉鐩稿悓鐨勶紝Consumer 闇€瑕佸垎鍒紦瀛樿繖涓や釜淇鐗堟湰鐨勫厓鏁版嵁銆� - -### 3.2 搴旂敤娉ㄥ唽鏃舵満 - -Dubbo-go v1.5.0 瀹炵幇鏃讹紝鍏朵腑涓€涓€冮噺鏄叏闈㈠悜鍚庡吋瀹� v1.4.x銆侱ubbo-go v1.5.x 搴旂敤 consumer 鏃㈠彲浠ヨ皟鐢� Dubbo-go v1.4.x 搴旂敤鐨勬湇鍔★紝涔熷彲浠ヨ皟鐢� Dubbo v2.6.x 搴旂敤鐨勬湇鍔★紝褰撶劧涔熷彲浠ヨ皟鐢ㄥ叾瀵规爣鐨� v2.7.x 搴旂敤鐨勬湇鍔°€� - -涓轰簡杈惧埌鍏煎鎬э紝Dubbo-go v1.5.x 瀹炵幇鏃堕潰涓翠竴涓棶棰橈細Dubbo-go provider 搴旂敤鍚姩鏃舵湁涓€涓湇鍔″惎鍔ㄦ垚鍔燂紝鎶婂簲鐢ㄤ俊鎭敞鍐屽埌鍏冩暟鎹腑蹇冧箣鍚庯紝灏变細鎶婂疄渚嬫敞鍐屽埌娉ㄥ唽涓績锛岃€� Dubbo 2.7.x 鐨� provider 搴旂敤鍒欐槸鍦ㄥ叾鎵€鏈夋湇鍔℃帴鍙g殑淇℃伅娉ㄥ唽鍒板厓鏁版嵁涓績鍚庢墠浼氭敞鍐屽疄渚嬶紒 - -杩欎釜闂鐨勫悗鏋滃氨鏄細Dubbo-go v1.5.0 鐨� provider 姣忔鍙戝竷鎺ュ彛鍒板厓鏁版嵁涓績鐨勫悓鏃讹紝閮戒細瑙﹀彂 Dubbo-go v1.5.0 / Dubbo v2.7.x 鐨� consumer 搴旂敤鎷夊彇 Dubbo-go v1.5.0 搴旂敤淇℃伅锛屽綋 provider 鍙戝竷鐨勬湇鍔¤繃澶氭椂 consumer 渚ф€ц兘鎹熻€楅潪甯告槑鏄撅紒 - -Dubbo-go 鍦� v1.5.1 涓凡缁忎慨澶嶄簡杩欎釜闂锛宲rovider 鍦ㄥ惎鍔ㄦ椂鍏堝皢鍏跺叏閮ㄦ湇鍔℃帴鍙e彂甯冨埌鍏冩暟鎹腑蹇冿紝鐒跺悗娉ㄥ唽瀹炰緥鍒版敞鍐屼腑蹇冿紝鍑忓皯浜� consumer 鎷夊彇鍏冩暟鎹殑娆℃暟銆� - -Dubbo-go 椤圭洰鍦板潃锛歔https://github.com/apache/dubbo-go](https://github.com/apache/dubbo-go) Dubbo-go 绀惧尯浜ゆ祦缇わ細23331795 - -### 娆㈣繋鍔犲叆 dubbo-go 绀惧尯 - -鏈変换浣� dubbo-go 鐩稿叧鐨勯棶棰橈紝鍙互鍔犳垜浠殑閽夐拤缇� 23331795 璇㈤棶鎺㈣锛屾垜浠竴瀹氱涓€鏃堕棿缁欏嚭鍙嶉銆� - diff --git a/doc/md/course/mosn-dubbo-go.md b/doc/md/course/mosn-dubbo-go.md deleted file mode 100644 index 31fc06cc3908a2d2150b0704aa948c0b09f12ae7..0000000000000000000000000000000000000000 --- a/doc/md/course/mosn-dubbo-go.md +++ /dev/null @@ -1,140 +0,0 @@ -# [鏇瑰ぇ璋� dubbo mesh : 鍦� MOSN 涓帺杞� dubbo-go](https://my.oschina.net/dubbogo/blog/4309475) - -## service mesh 绠€浠� - -service mesh 鏈韩鐨勭悊蹇靛苟涓嶅鏉傦紝灏辨槸灏嗙幇浠e井鏈嶅姟搴旂敤鐨勫姛鑳芥€т笌闈炲姛鑳芥€ч渶姹傝繘琛屽垎绂伙紝骞跺皢闈炲姛鑳芥€ч渶姹備笅娌夊埌搴旂敤鐨勫閮ㄦā鍧楋紝浠庤€屼娇搴旂敤妯″潡鍙互灏介噺鑱氱劍浜庝笟鍔★紝涓嶇敤鍏冲績璇稿锛氭湇鍔″彂鐜般€侀檺娴併€佺啍鏂€乼racing 杩欑被闈炰笟鍔¢渶姹傘€備笅娌変箣鍚庯紝鐩稿叧鐨� service mesh 妯″潡鍙互浜ょ敱鍩虹鏋舵瀯鍥㈤槦杩涜缁存姢锛屼娇鍩虹璁炬柦鍜屼笟鍔¤兘澶熷畬鎴愯В鑰︺€� - -service mesh 璁捐涓€鑸垝鍒嗕负涓や釜妯″潡锛屾帶鍒堕潰鍜屾暟鎹潰銆傚彲浠ラ€氳繃涓嬪浘鏉ョ悊瑙g浉搴旂殑鑱岃矗锛� - - -瀵逛簬搴旂敤鏉ヨ锛屾墍鏈夋祦閲忛兘浼氱粡杩� service mesh 涓殑鏁版嵁闈㈣繘琛岃浆鍙戙€傝€岃兘椤哄埄杞彂鐨勫墠鎻愶細鏁版嵁闈㈤渶瑕佺煡閬撹浆鍙戠殑鐩爣鍦板潃锛岀洰鏍囧湴鍧€鏈韩鏄敱涓€浜涗笟鍔¢€昏緫鏉ュ喅瀹氱殑(渚嬪鏈嶅姟鍙戠幇)锛屾墍浠ヨ嚜鐒惰€岀劧鍦帮紝鎴戜滑鍙互鎺ㄦ柇鎺у埗闈㈤渶瑕佽礋璐g鐞嗘暟鎹潰鑳芥甯歌繍琛屾墍闇€瑕佺殑涓€浜涢厤缃細 - -闇€瑕佺煡閬撴煇娆¤姹傝浆鍙戝幓鍝噷锛氭湇鍔″彂鐜伴厤缃� -澶栭儴娴侀噺杩涘叆闇€瑕佸垽鏂槸鍚﹀凡缁忚揪鍒版湇鍔℃祦閲忎笂闄愶細闄愭祦閰嶇疆 -渚濊禆鏈嶅姟杩斿洖閿欒鏃讹紝闇€瑕佽兘澶熸墽琛岀浉搴旂殑鐔旀柇閫昏緫锛氱啍鏂厤缃� -寮€婧愮晫鐩墠姣旇緝鏈夊悕鐨勪富瑕佹槸 istio锛宔nvoy 鍜� linkerd 杩欏嚑涓」鐩紝浠婂ぉ鎴戜滑鏉ヤ粙缁嶄竴涓嬭殏铓佹帹鍑虹殑 service mesh 鏁版嵁闈㈤」鐩細MOSN銆� - -## MOSN 绠€浠� - -MOSN 鏄殏铓侀噾鏈嶅嚭鍝佺殑鐢� Go 璇█瀹炵幇鐨� service mesh 鏁版嵁闈紝鍦ㄨ殏铓佸唴閮ㄥ凡澶ц妯¤惤鍦帮紝鍦ㄥ紑婧愯繃绋嬩腑鎴戜滑浜嗚В鍒板閮ㄧ敤鎴锋湁杈冨鐨� dubbo 鐢ㄦ埛锛岃繖浜� dubbo 鐢ㄦ埛涔熷笇鏈涜兘澶熶韩鍙� service mesh 绀惧尯鐨勫彂灞曠孩鍒┿€傚悓鏃跺彲浠ラ拡瀵硅嚜宸卞叕鍙哥殑鐗规畩涓氬姟鍦烘櫙锛屽 service mesh 鐨勬暟鎹潰杩涜涓€瀹氱殑鎵╁睍銆� - -璋堝埌鎵╁睍锛孧OSN 浣跨敤 Go 缂栧啓鐨勪紭鍔垮氨浣撶幇鍑烘潵浜嗐€傜浉姣� C++锛孏o 璇█閫氳繃鑷甫鐨勫唴瀛樺垎閰嶅櫒涓� GC 瀹炵幇浜嗕竴瀹氱▼搴︾殑鍐呭瓨瀹夊叏锛岃В鏀句簡绋嬪簭鍛樼殑蹇冩櫤銆傜浉姣� C++ 缂栧啓鐨� envoy锛屾棤璁烘槸缂栫▼鍜岄棶棰樺畾浣嶉兘瑕佽交鏉句笉灏戙€� - -MOSN 鍚屾椂鎻愪緵浜嗗己澶х殑 XProtocol 鍗忚鎵╁睍妗嗘灦锛岀敤鎴峰彲浠ユ牴鎹嚜宸辩殑闇€姹傜紪鍐欒嚜瀹氫箟鍗忚瑙f瀽銆傚鏋滀綘浣跨敤鐨勬槸 SOFA/Dubbo/HTTP/HTTP2锛岄偅涔� MOSN 宸茬粡涓轰綘鍑嗗濂戒簡鐜版垚鐨勫疄鐜般€傚紑绠卞嵆鐢ㄣ€� - -涓轰簡婊¤冻绀惧尯鐨勯渶姹傦紝浠庝粖骞� 4 鏈堝紑濮嬶紝MOSN 绀惧尯涓� dubbo-go 绀惧尯杩涜浜嗘繁鍏ョ殑浜ゆ祦涓庡悎浣溿€傚彲鑳借繕鏈変簺鍚屽瀵� dubbo-go 涓嶅お浜嗚В锛岀畝鍗曚粙缁嶄竴涓嬨€� - -## dubbo-go 绠€浠� - -dubbo 鏄樋閲屽反宸村嚭鍝佷竴涓潪甯镐紭绉€鐨� Java RPC 妗嗘灦锛岀浉姣斿叾瀹冩鏋讹紝鏈夎緝涓哄叏闈㈢殑鏈嶅姟娌荤悊鍔熻兘銆� - -dubbo-go 鏄� dubbo 鐨� Go 璇█鐗堟湰锛岃椤圭洰宸茶繘鍏� apache 涓€骞存湁浣欙紝寮€鍙戠ぞ鍖哄緢娲昏穬锛岀増鏈彂甯冭妭濂忚緝蹇€傚姛鑳戒笂涔熷熀鏈拰 dubbo 鐨� Java 鐗堥兘瀵归綈浜嗐€� - -瀵逛簬鍠滄 dubbo 鐨� gopher 鏉ヨ锛宒ubbo-go 鏄釜涓嶉敊鐨勯€夋嫨銆備娇鐢ㄥ畠鏉ユ瀯寤烘暣涓叕鍙哥殑鏈嶅姟妗嗘灦锛岀渷鏃剁渷蹇冦€� - -## MOSN + dubbo-go 鍙屽墤鍚堢挧 - -service mesh 鑳藉缁欏井鏈嶅姟鐨勬暣浣撴灦鏋勫甫鏉ュ緢澶氬ソ澶勶紝鐒惰€屼笟鐣屾彁渚涚殑鍏ㄥ妗舵柟妗堜笉涓€瀹氳兘寰堝ソ鍦板湪浼佷笟鍐呰惤鍦帮紝鏈変笅闈竴浜涘師鍥狅細 - -瑕佹眰鏁版嵁闈㈠拰鎺у埗闈竴璧蜂笂绾匡紝鏃╂湡 istio 鍥犱负璁捐闂锛屾湁浼楀妯″潡銆備細澶у箙澧炲姞浼佷笟鐨勮繍缁磋礋鎷呫€� -浼佷笟涓� mesh 涓€瀹氭槸娓愯繘閮ㄧ讲锛屼笉鍙兘涓€娆℃€ц鎵€鏈夋湇鍔″叏閮ㄤ笂銆傝繖鏍峰氨浼氭湁鍦� mesh 涓殑搴旂敤鍜岄潪 mesh 涓殑搴旂敤闇€瑕佽兘澶熶簰閫氱殑闇€姹傘€� -铓傝殎鐨� service mesh 钀藉湴杩囩▼鐩稿杈冧负鎴愬姛锛屽€煎緱鍙傝€冦€傚湪鍐呴儴钀藉湴鏃讹紝棣栧厛鍙惤鍦版暟鎹潰锛岃繖鏍疯繍缁磋礋鎷呰緝杞伙紝鍚屾椂鍑洪棶棰樻椂涔熷鏄撴帓鏌ャ€� - -浣嗗彧钀藉湴鏁版嵁闈㈢殑璇濓紝鏈変簺鎺у埗闈㈢殑鍔熻兘鎴戜滑灏辨病鏈変簡锛屾瘮濡傛湇鍔″彂鐜般€佽矾鐢遍厤缃闃呯瓑绛夈€傚洜姝ゅ湪 MOSN 涓紝鍙堥澶栧杩欎簺鍔熻兘杩涜浜嗘敮鎸�(鐩稿綋浜庣洰鍓嶇殑鏁版嵁闈㈠崟妯″潡鍚屾椂鎵胯浇浜嗘暟鎹潰鍜屾帶鍒堕潰鐨勯儴鍒嗗姛鑳�)銆傚綋鏁版嵁闈㈢ǔ瀹氳惤鍦颁箣鍚庯紝鍐嶈繘琛屾帶鍒堕潰鐨勮惤鍦扮浉瀵规潵璇磋礋鎷呭氨灏忓緢澶氫簡銆� - -涓婇潰鐨勬槸铓傝殎鍐呴儴鐨勬儏鍐碉紝鍦ㄧぞ鍖哄唴锛孧OSN 鍊熷姪 dubbo-go 鐨勮兘鍔涳紝宸茬粡瀹炵幇浜嗘湇鍔″彂鐜板姛鑳斤紝鐢ㄦ埛搴旂敤鍚姩銆侀€€鍑烘椂闇€瑕佸拰 MOSN 杩涜绠€鍗曠殑浜や簰锛屼互瀹屾垚鏈嶅姟鐨勫彂甯冨拰璁㈤槄鍔熻兘锛屼笅闈㈡槸鍙戝竷娴佺▼锛� - -鍦ㄥ簲鐢ㄥ惎鍔ㄦ椂锛岃闂湰鍦扮殑 MOSN http 鎺ュ彛锛屽憡鐭ラ渶瑕佸皢鏈湴鐨勬湇鍔″彂甯冨嚭鍘伙紝MOSN 鏀跺埌璇锋眰鍚庡澶栧彂甯� MOSN 鐨� ip 鍜岀鍙e埌娉ㄥ唽涓績銆傝繖鏍风洃鍚湰鏈嶅姟鐨� consumer 渚垮彲浠ヤ粠娉ㄥ唽涓績鏀跺埌鏈嶅姟鍙樻洿鐨勯€氱煡锛屽苟灏嗘湰瀹炰緥鍔犲叆鍒扮浉搴旂殑 provider 鍒楄〃銆傚綋搴旂敤閫€鍑烘椂锛岄渶瑕佷富鍔ㄨ繘琛� unpub銆� - -杩欑鎯呭喌涓嬬殑鏀归€犳垚鏈細 - -- 瀵逛簬涓氬姟鏂规潵璇达紝鍙渶瑕佸崌绾� sdk銆� -- 瀵逛簬 sdk 缁存姢鏂癸紝鍦ㄦ墽琛� sub/pub/unsub/unpub 鏃讹紝闇€瑕佸鍔犱竴涓紑鍏冲垽鏂紝- 寮€鍏虫墦寮€鏃讹紝璇存槑鏈疄渚嬪凡涓� service mesh銆傝姹傜浉搴旂殑鏈湴 MOSN 鎺ュ彛銆� -- 瀵逛簬 mesh 鎻愪緵鏂癸紝鍙鍋氬ソ閰嶇疆鍜岄儴缃插氨鍙互浜嗐€� - -鎺ュ叆 MOSN 鍚庯紝mesh 鍖栧拰闈� mesh 鍖栫殑搴旂敤鍙互浜掗€氾細 - - -褰撶劧锛屽紑鍙戣繃绋嬩篃骞朵笉鏄竴甯嗛椤虹殑銆傚湪鎴戜滑鍒氬紑濮嬩娇鐢� dubbo-go 鏃讹紝渚块亣鍒颁簡 dubbo-go 鐨勪緷璧栦笌 MOSN 鐨勪緷璧栨湁鍐茬獊鐨勯棶棰橈細 - - -Go 璇█鐨� go mod 璇箟浼氣€滆嚜浣滆仾鏄庘€濆湴璁や负 0.y.z 鐨勫閮ㄤ緷璧栭兘鏄郊姝ゅ吋瀹圭殑锛岀劧鑰屾垜浠粠 semver 瑙勮寖鍙互瀛︿範鍒帮細 - -> Major version zero (0.y.z) is for initial development. Anything MAY change at any time. The public API SHOULD NOT be considered stable. - -0.y.z 鍙槸鐢ㄦ潵鍋氬垵濮嬬殑寮€鍙戯紝鏈韩 API 鐨勫彉鍖栧氨鏄緢棰戠箒鐨勶紝渚濊禆绠$悊宸ュ叿涓嶅簲璇ヨ嚜鍔ㄥ幓鍗囩骇杩欎簺渚濊禆銆備絾鏄� Go 绀惧尯鐨勪汉鏈変笉灏戜汉鍧氭寔 go mod 鐨勮涓烘纭紝骞朵笖绁嚭 MVS 绠楁硶锛岃〃绀虹鍒伴棶棰樼殑鍙槸涓嶆噦 Go 鐨勫摬瀛︺€� - -褰撳墠 Go 鐨勪緷璧栫鐞嗕娇寰椾袱涓ぇ椤圭洰鍙戠敓渚濊禆鍐茬獊鏃讹紝姣旇緝闅惧鐞嗭紝鎴戜滑鍙兘鏍规嵁瀹為檯鎯呭喌鍘� go.mod 涓幓鍐欎竴浜� replace 閫昏緫锛屾潵閿佸畾澶栭儴渚濊禆搴撶増鏈€� - -闄や簡渚濊禆闂浠ュ锛宒ubbo-go 鏈€鍒濈殑璁捐澶ч噺浣跨敤浜� init 鍑芥暟銆俰nit 鍑芥暟鐢ㄦ潵瀹炵幇涓€浜涘垵濮嬪寲鍜屼緷璧栨敞鍏ョ‘瀹炴瘮杈冩柟渚匡紝浣嗗鏋滀竴涓」鐩腑鐨勬ā鍧椾細琚叾瀹冨閮ㄩ」鐩緷璧栨椂锛宨nit 鍒欏彲鑳界粰鎴戜滑閫犳垚楹荤儲锛屼妇涓畝鍗曠殑渚嬪瓙锛� - -```go -package x -var GlobalMap = map[string]int{} - -package a -func init() { - x.GlobalMap["x"] = 1 -} - -package b -func init() { - x.GlobalMap["x"] = 2 -} -``` - -濡傛灉鎴戜滑鍦ㄦ煇涓寘涓悓鏃朵緷璧� a 鍜� b锛岄偅涔堜笅闈㈢殑涓ょ鍐欐硶锛屽緱鍒扮殑缁撴灉鏄笉涓€鏍风殑锛� - -```go -package show -import ( - "a" - "b" - "x" -) - -func main() { - println(x.GlobalMap["x"]) -} -``` - -```go -package show -import ( - "b" - "a" - "x" -) -func main() { - println(x.GlobalMap["x"]) -} -``` - -涓轰簡閬垮厤杩欎簺闅愬紡鐨� init 琛屼负锛屾垜浠疄闄呬笂鏄� fork 浜� dubbo-go 骞惰繘琛屼簡灏戦噺淇敼鐨勩€傚綋鐒讹紝鏀瑰姩骞朵笉澶氾紝鏈潵濡傛灉 dubbo-go 鏈夋洿濂界殑妯″潡鍖栨柟娉曠殑璇濓紝鎴戜滑涔熷彲浠ュ緢杞绘澗鍦拌縼绉诲洖鐩存帴渚濊禆 dubbo-go銆� - -鍦� MOSN 闆嗘垚 dubbo-go 鐨勮繃绋嬩腑锛宒ubbo-go 绀惧尯鐨勮€佸摜浠粰浜堜簡鎴戜滑澶ч噺鐨勬敮鎸侊紝璐ゅ摜(https://github.com/zouyx)甯姪鎴戜滑鍦� dubbo-go 涓疄鐜颁簡涔嬪墠涓嶆敮鎸佺殑 unsub/unpub 鍔熻兘锛屽苟甯姪鎴戜滑瑙e喅浜嗗緢澶氭妧鏈柟闈㈢殑闂銆俤ubbo-go 绀惧尯璐熻矗浜轰簬闆�( https://github.com/alexstocks )涔熷湪寮€鍙戣繃绋嬩腑鎻愪緵浜嗗ぇ閲忕殑淇℃伅鍜屾妧鏈敮鎸併€傛湁杩欎袱浣嶇殑鏀寔锛孧OSN 鍜� dubbo 鐨勯泦鎴愭墠椤虹晠鏃犳瘮锛屽惁鍒欑殑璇濊澶氳蛋寰堝寮矾銆� - -## 鍏跺畠閫夋嫨 - -闄や簡鏈枃鎻愬埌鐨� MOSN + dubbo-go 闆嗘垚鏂瑰紡锛屽鐐圭殑闄堥箯鍚屽涓烘垜浠彁渚涗簡鍙︿竴绉嶆€濊矾杩涜闆嗘垚锛屾湰鏂囧氨涓嶅睍寮€浜嗭紝鎰熷叴瓒g殑鍚屽鍙互鍙傝€冩枃鏈殑璧勬枡 [3]銆� - -## 鏈枃浣滆€� - -鏇规槬鏅栵紝寮€婧� MOSN committer锛孈cch123锛岃殏铓侀噾鏈嶇郴缁熼儴鎶€鏈笓瀹讹紝涓绘敾 Service Mesh 鏂瑰悜銆備釜浜烘妧鏈綉绔� xargin.com锛屽拰浠栦汉鍚堣憲銆奊o 璇█楂樼骇缂栫▼銆嬨€� - -## 鍙傝€冭祫鏂� - -[1]. https://jimmysong.io/blog/what-is-a-service-mesh/ - -[2]. https://mosn.io/zh/docs/concept/multi-protocol - -[3]. https://mp.weixin.qq.com/s/mhHnH6ZDPPs6Gr0a20WGOw - -### 娆㈣繋鍔犲叆 dubbo-go 绀惧尯 - -鏈変换浣� dubbo-go 鐩稿叧鐨勯棶棰橈紝鍙互鍔犳垜浠殑閽夐拤缇� 23331795 璇㈤棶鎺㈣锛屾垜浠竴瀹氱涓€鏃堕棿缁欏嚭鍙嶉銆� - - -### 鏈€鏂版椿鍔� - -Dubbo-go ASoC 鐩稿叧棰樼洰 锛屽弬鍔犺鎯� 璇风偣鍑� diff --git a/doc/md/course/practice-and-exploration-of-dubbo-go.md b/doc/md/course/practice-and-exploration-of-dubbo-go.md deleted file mode 100644 index 7f5e16d86a9fd3b31ee80c8d2326a4c81d32b32e..0000000000000000000000000000000000000000 --- a/doc/md/course/practice-and-exploration-of-dubbo-go.md +++ /dev/null @@ -1,288 +0,0 @@ -# [娑傞甫鏅鸿兘 dubbo-go 浜跨骇娴侀噺鐨勫疄璺典笌鎺㈢储](https://my.oschina.net/dubbogo/blog/4306343) - -dubbo 鏄竴涓熀浜� Java 寮€鍙戠殑楂樻€ц兘鐨勮交閲忕骇 RPC 妗嗘灦锛宒ubbo 鎻愪緵浜嗕赴瀵岀殑鏈嶅姟娌荤悊鍔熻兘鍜屼紭绉€鐨勬墿灞曡兘鍔涖€傝€� dubbo-go 鍦� java 涓� golang 涔嬮棿鎻愪緵缁熶竴鐨勬湇鍔″寲鑳藉姏涓庢爣鍑嗭紝鏄秱楦︽櫤鑳界洰鍓嶆渶闇€瑕佽В鍐崇殑涓昏闂銆傛湰鏂囧垎涓哄疄璺靛拰蹇€熸帴鍏ヤ袱閮ㄥ垎锛屽垎浜湪娑傞甫鏅鸿兘鐨� [dubbo-go](http://github.com/apache/dubbo-go) 瀹炴垬缁忛獙锛屾剰鍦ㄥ府鍔╃敤鎴峰揩閫熸帴鍏� dubbo-go RPC 妗嗘灦锛屽笇鏈涜兘璁╁ぇ瀹跺皯璧颁簺寮矾銆� - -鍙﹀锛屾枃涓殑娴嬭瘯浠g爜鍩轰簬 dubbo-go 鐗堟湰 [v1.4.0](https://github.com/apache/dubbo-go/releases/tag/v1.4.0)銆� - -## dubbo-go 缃戝叧瀹炶返 - - - -dubbo-go 鍦ㄦ秱楦︽櫤鑳界殑浣跨敤鎯呭喌濡備笂鍥撅紝鎺ヤ笅鏉ヤ細涓哄ぇ瀹惰缁嗕粙缁嶈惤鍦扮粏鑺傦紝甯屾湜杩欎簺鍦ㄧ敓浜х幆澧冧腑鎬荤粨鐨勭粡楠岃兘澶熷府鍔╁埌澶у銆� - -### 鑳屾櫙 - -鍦ㄦ秱楦︽櫤鑳斤紝dubbo-go 宸茬粡浣滀负浜� golang 鏈嶅姟涓庡師鏈� dubbo 闆嗙兢鎵撻€氱殑棣栭€� RPC 妗嗘灦銆傚叾涓瘮杈冩湁浠h〃鎬х殑 open-gateway 缃戝叧绯荤粺锛堜笅鏂囩粺涓€绉� gateway锛屽紑婧愮増鏈 [https://github.com/dubbogo/dubbo-go-proxy](https://github.com/dubbogo/dubbo-go-proxy)锛夈€傝 gateway 鍔ㄦ€佸姞杞藉唴閮� dubbo 鎺ュ彛淇℃伅锛屼互 HTTP API 鐨勫舰寮忓澶栨毚闇层€傝缃戝叧鎰忓湪瑙e喅涓婁竴浠g綉鍏崇殑浠ヤ笅鐥涚偣銆� - -- `閫氳繃椤甸潰閰嶇疆 dubbo 鎺ュ彛寮€鏀捐鍒欙紝姝ラ绻佺悙锛屾潈闄愰毦浠ユ妸鎺с€俙 -- `鎺ュ彛闈� RESTful 椋庢牸锛屽澶栭儴寮€鍙戣€呬笉鍙嬪ソ銆俙 -- `渚濊禆绻侀噸锛屽崌绾ч闄╁ぇ銆俙 -- `骞跺彂鎬ц兘闂銆俙 - -### 鏋舵瀯璁捐 - -閽堝濡備笂鐥涚偣锛岄殢鍗崇潃鎵嬪噯澶囪璁℃柊鐨� gateway 鏋舵瀯銆傞鍏堝氨鏄瑷€閫夊瀷锛実olang 鐨勫崗绋嬭皟鐢ㄦā鍨嬩娇寰� golang 闈炲父閫傚悎鏋勫缓 IO 瀵嗛泦鍨嬬殑搴旂敤锛屼笖搴旂敤閮ㄧ讲涓婁篃杈� java 绠€鍗曘€傜粡杩囪皟鐮斿悗鎴戜滑鏁插畾浣跨敤 golang 浣滀负 proxy 鐨勭紪鐮佽瑷€锛屽苟浣跨敤 dubbo-go 鐢ㄤ簬杩炴帴 dubbo provider 闆嗙兢銆俻rovider 绔殑涓氬姟搴旂敤閫氳繃浣跨敤 java 鐨勬彃浠讹紝浠ユ敞瑙e舰寮忛厤缃� API 閰嶇疆淇℃伅锛岃鎻掍欢浼氬皢閰嶇疆淇℃伅鍜� dubbo 鎺ュ彛鍏冩暟鎹洿鏂板埌鍏冩暟鎹敞鍐屼腑蹇冿紙涓嬪浘涓殑 redis 锛夈€傝繖鏍蜂竴鏉ワ紝閰嶇疆浠庣鐞嗗悗鍙伴〉闈㈣浆绉诲埌浜嗙▼搴忎唬鐮佷腑銆傚紑鍙戜汉鍛樺湪缂栫爜鏃讹紝闈炲父鏂逛究鍦扮湅鍒� dubbo 鎺ュ彛瀵瑰鐨� API 鎻忚堪锛屾棤闇€浠庡彟澶栦竴涓鐞嗗悗鍙伴厤缃� API 鐨勪娇鐢ㄦ柟寮忋€� - - -### 瀹炶返 - -浠庝笂鍥惧彲浠ョ湅鍒帮紝缃戝叧鑳藉姩鎬佸姞杞� dubbo 鎺ュ彛淇℃伅锛岃皟鐢� dubbo 鎺ュ彛鏄熀浜� dubbo 娉涘寲璋冪敤銆傛硾鍖栬皟鐢ㄤ娇 client 涓嶉渶瑕佹瀯寤� provider 鐨� interface 浠g爜锛屽湪 dubbo-go 涓〃鐜颁负鏃犻渶璋冪敤 config.SetConsumerService 鍜� hessian.RegisterPOJO 鏂规硶锛岃€屾槸灏嗚姹傛ā鍨嬬函鍙傛暟瀹屾垚锛岃繖浣垮緱 client 鍔ㄦ€佹柊澧炪€佷慨鏀规帴鍙f垚涓哄彲鑳姐€傚湪 [apache/dubbo-sample/golang/generic/go-client](https://github.com/apache/dubbo-samples/tree/master/golang/generic/go-client) 涓殑鏈夋硾鍖栬皟鐢ㄧ殑婕旂ず浠g爜銆� - -```go -func test() { - var appName = "UserProviderGer" - var referenceConfig = config.ReferenceConfig{ - InterfaceName: "com.ikurento.user.UserProvider", - Cluster: "failover", - Registry: "hangzhouzk", - Protocol: dubbo.DUBBO, - Generic: true, - } - referenceConfig.GenericLoad(appName) // appName is the unique identification of RPCService - - time.Sleep(3 * time.Second) - - resp, err := referenceConfig.GetRPCService().(*config.GenericService). - Invoke([]interface{}{"GetUser", []string{"java.lang.String"}, []interface{}{"A003"}}) - if err != nil { - panic(err) - } -} -``` - -娉涘寲璋冪敤鐨勫疄鐜板叾瀹炵浉褰撶畝鍗曘€傚叾鍔熻兘浣滅敤鍦� dubbo 鐨� Filter 灞備腑銆俒Generic Filter](https://github.com/apache/dubbo-go/blob/master/filter/filter_impl/generic_filter.go) 宸茬粡浣滀负榛樿寮€鍚殑 Filter 鍔犲叆鍒� dubbo Filter 閾句腑銆傚叾鏍稿績閫昏緫濡備笅锛� - -```go -func (ef *GenericFilter) Invoke(ctx context.Context, invoker protocol.Invoker, invocation protocol.Invocation) protocol.Result { - if invocation.MethodName() == constant.GENERIC && len(invocation.Arguments()) == 3 { - oldArguments := invocation.Arguments() - - if oldParams, ok := oldArguments[2].([]interface{}); ok { - newParams := make([]hessian.Object, 0, len(oldParams)) - for i := range oldParams { - newParams = append(newParams, hessian.Object(struct2MapAll(oldParams[i]))) - } - newArguments := []interface{}{ - oldArguments[0], - oldArguments[1], - newParams, - } - newInvocation := invocation2.NewRPCInvocation(invocation.MethodName(), newArguments, invocation.Attachments()) - newInvocation.SetReply(invocation.Reply()) - return invoker.Invoke(ctx, newInvocation) - } - } - return invoker.Invoke(ctx, invocation) -} -``` - -Generic Filter 灏嗙敤鎴疯姹傜殑缁撴瀯浣撳弬鏁拌浆鍖栦负缁熶竴鏍煎紡鐨� map锛堜唬鐮佷腑鐨� struct2MapAll 锛夛紝灏嗙被锛� golang 涓负 struct 锛夌殑姝e弽搴忓垪鍖栨搷浣滃彉鎴� map 鐨勬鍙嶅簭鍒楀寲鎿嶄綔銆傝繖浣垮緱鏃犻渶 POJO 鎻忚堪閫氳繃纭紪鐮佹敞鍏� hessain 搴撱€� - -浠庝笂闈唬鐮佸彲浠ョ湅鍒帮紝娉涘寲璋冪敤瀹為檯闇€瑕佸姩鎬佹瀯寤虹殑鍐呭鏈� 4 涓紝ReferenceConfig 涓渶瑕佺殑 InterfaceName 銆佸弬鏁颁腑鐨� method 銆丳arameterTypes銆佸疄闄呭叆鍙� requestParams銆� - -**閭d箞杩欎簺鍙傛暟鏄浣曚粠 HTTP API 鍖归厤鑾峰彇鍒扮殑鍛紵** - -杩欓噷灏变細鐢ㄥ埌涓婃枃鎻愬埌鐨� provider 鐢ㄤ簬鏀堕泦鍏冩暟鎹殑鎻掍欢銆傚紩鍏ユ彃浠跺悗锛屽簲鐢ㄥ湪鍚姩鏃朵細鎵弿闇€瑕佹毚闇茬殑 dubbo 鎺ュ彛锛屽皢 dubbo 鍏冩暟鎹拰 HTTP API 鍏宠仈銆傛彃浠朵娇鐢ㄦ柟娉曞ぇ鑷村涓嬶紝杩欓噷璋冧簡鍑犱釜绠€鍗曠殑閰嶇疆浣滀负绀轰緥锛屽疄闄呯敓浜ф椂娉ㄨВ鍐呭浼氭洿澶氥€� - - -鏈€缁堣幏寰楃殑 dubbo 鍏冩暟鎹涓�: - -```json -{ - "key": "POST:/hello/{uid}/add", - "interfaceName": "com.tuya.hello.service.template.IUserServer", - "methodName": "addUser", - "parameterTypes": [ - "com.tuya.gateway.Context", - "java.lang.String", - "com.tuya.hello.User" - ], - "parameterNames": [ - "context", - "uid", - "userInfo" - ], - "updateTimestamp": "1234567890", - "permissionDO": {}, - "voMap": { - "userInfo": { - "name": "java.lang.String", - "sex": "java.lang.String", - "age": "java.lang.Integer" - } - }, - "parameterNameHumpToLine": true, - "resultFiledHumpToLine": false, - "protocolName": "dubbo" -} -``` - -Gateway 浠庡厓鏁版嵁閰嶇疆涓績璁㈤槄鍒颁互涓婁俊鎭紝灏辫兘鎶婁竴涓� API 璇锋眰鍖归厤鍒颁竴涓� dubbo 鎺ュ彛銆傚啀浠� API 璇锋眰涓姄鍙栧弬鏁颁綔涓哄叆鍙傘€傝繖鏍峰姛鑳藉氨瀹屾垚浜嗘祦閲忛棴鐜€� - -浠ヤ笂鍐呭锛屽ぇ瀹跺簲璇ュ姝� gateway 鐨勯」鐩嫇鎵戠粨鏋勬湁浜嗘竻鏅扮殑璁ょ煡銆傛垜鎺ョ潃鍒嗕韩椤圭洰鍦ㄤ娇鐢� dubbo-go 杩囩▼涓亣鍒扮殑闂鍜岃皟浼樼粡楠屻€�19 骞村垵锛屽綋鏃剁殑 dubbo-go 椤圭洰杩樺彧鏄瀯寤哄垵鏈燂紝娌℃湁浠€涔堢敤鎴疯惤鍦扮殑缁忛獙銆傛垜涔熸槸涓€杈瑰弬涓庣ぞ鍖哄紑鍙戯紝涓€杈圭紪鐮佸叕鍙稿唴閮ㄧ綉鍏抽」鐩€傚湪瑙e喅浜嗕竴鍫� hessain 搴忓垪鍖栧拰 zookeeper 娉ㄥ唽涓績鐨勯棶棰樺悗锛岄」鐩渶缁堣窇閫氫簡闂幆銆備絾鏄紝浣滀负涓€涓牳蹇冨簲鐢紝璺戦€氶棴鐜涓婄敓浜х幆澧冭繕鏈夊緢闀跨殑璺璧帮紝鐗瑰埆鏄娇鐢ㄤ簡褰撴椂绋冲畾鎬у緟娴嬭瘯鐨勬柊妗嗘灦銆傛暣涓祴璇曞姞涓婂姛鑳借ˉ鍏紝鏁存暣鑺辫垂浜嗕竴涓搴︾殑鏃堕棿锛岀洿鍒伴」鐩秼浜庣ǔ瀹氾紝鍘嬫祴鏁堟灉涔熻壇濂姐€�**鍗曞彴缃戝叧鏈哄櫒锛� 2C 8G 锛夊叏閾捐矾妯℃嫙鐪熷疄鐜鍘嬫祴杈惧埌 2000 QPS銆傜敱浜庡紩鍏ヤ簡姣旇緝閲嶇殑涓氬姟閫昏緫锛堝崟涓姹傚钩鍧囪皟鐢� 3 涓� dubbo 鎺ュ彛锛夛紝瀵逛簬杩欎釜鍘嬫祴缁撴灉锛屾槸绗﹀悎鐢氳嚦瓒呭嚭棰勬湡鐨勩€�** - -鎬荤粨浜嗕竴浜� dubbo-go 鍙傛暟閰嶇疆璋冧紭鐨勭粡楠岋紝涓昏鏄竴浜涚綉缁滅浉鍏抽厤缃€傚ぇ瀹跺湪璺� demo 鏃讹紝搴旇浼氱湅鍒伴厤缃枃浠舵渶鍚庢湁涓€鍫嗛厤缃紝浣嗗鏋滃 dubbo-go 搴曞眰缃戠粶妯″瀷涓嶇啛鎮夛紝灏卞緢闅剧悊瑙h繖浜涢厤缃殑鍚箟銆傜洰鍓� dubbo-go 缃戠粶灞備互 [getty](https://github.com/AlexStocks/getty) 涓哄簳灞傛鏋讹紝瀹炵幇璇诲啓鍒嗙鍜屽崗绋嬫睜绠$悊銆俫etty 瀵瑰鏆撮湶 session 鐨勬蹇碉紝session 鎻愪緵涓€绯诲垪缃戠粶灞傛柟娉曟敞鍏ョ殑瀹炵幇锛屽洜涓烘湰鏂囦笉鏄簮鐮佽В鏋愭枃妗o紝鍦ㄨ繖閲屼笉杩囧璁鸿堪銆�**璇昏€呭彲浠ョ畝鍗曠殑璁や负 dubbo-go 缁存姢浜嗕竴涓� getty session 姹狅紝session 鍙堢淮鎶や簡涓€涓� TCP 杩炴帴姹犮€傚浜庢瘡涓繛鎺ワ紝getty 浼氭湁璇诲崗绋嬪拰鍐欏崗绋嬩即鐢燂紝鍋氬埌璇诲啓鍒嗙**銆傝繖閲屾垜灏介噺鐢ㄩ€氫織鐨勬敞閲婂府澶у姊崇悊涓嬪鎬ц兘褰卞搷杈冨ぇ鐨勫嚑涓厤缃惈涔夛細 - -```yaml -protocol_conf: - # 杩欓噷鏄崗璁嫭绔嬬殑閰嶇疆锛屽湪dubbo鍗忚涓嬶紝澶у鏁伴厤缃嵆涓篻etty session鐩稿叧鐨勯厤缃€� - dubbo: - # 涓€涓猻ession浼氬缁堜繚璇乧onnection_number涓猼cp杩炴帴涓暟锛岄粯璁ゆ槸16锛� - # 浣嗚繖閲屽缓璁ぇ瀹堕厤缃浉瀵瑰皬鐨勫€硷紝涓€鑸郴缁熶笉闇€瑕佸姝ゅ鐨勮繛鎺ヤ釜鏁般€� - # 姣忛殧reconnect_interval鏃堕棿锛屾鏌ヨ繛鎺ヤ釜鏁帮紝濡傛灉灏忎簬connection_number锛� - # 灏卞缓绔嬭繛鎺ャ€傚~0鎴栦笉濉兘涓洪粯璁ゅ€�300ms - reconnect_interval: 0 - connection_number: 2 - # 瀹㈡埛绔彂閫佸績璺崇殑闂撮殧 - heartbeat_period: "30s" - # OnCron鏃秙ession鐨勮秴鏃舵椂闂达紝瓒呰繃session_timeout鏃犺繑鍥炲氨鍏抽棴session - session_timeout: "30s" - # 姣忎竴涓猟ubbo interface鐨勫鎴风锛屼細缁存姢涓€涓渶澶у€间负pool_size澶у皬鐨剆ession姹犮€� - # 姣忔璇锋眰浠巗ession姹犱腑select涓€涓€傛墍浠ョ湡瀹炵殑tcp鏁伴噺鏄痵ession鏁伴噺*connection_number锛� - # 鑰宲ool_size鏄痵ession鏁伴噺鐨勬渶澶у€笺€傛祴璇曟€荤粨涓嬫潵涓€鑸▼搴�4涓猼cp杩炴帴瓒充互銆� - pool_size: 4 - # session淇濇椿瓒呮椂鏃堕棿锛屼篃灏辨槸瓒呰繃session_timeout鏃堕棿娌℃湁浣跨敤璇ession锛屽氨浼氬叧闂session - pool_ttl: 600 - # 澶勭悊杩斿洖鍊肩殑鍗忕▼姹犲ぇ灏� - gr_pool_size: 1200 - # 璇绘暟鎹拰鍗忕▼姹犱腑鐨勭紦鍐查槦鍒楅暱搴︼紝鐩墠宸茬粡搴熷純銆備笉浣跨敤缂撳啿闃熷垪 - queue_len: 64 - queue_number: 60 - getty_session_param: - compress_encoding: false - tcp_no_delay: true - tcp_keep_alive: true - keep_alive_period: "120s" - tcp_r_buf_size: 262144 - tcp_w_buf_size: 65536 - pkg_wq_size: 512 - tcp_read_timeout: "1s" # 姣忔璇诲寘鐨勮秴鏃舵椂闂� - tcp_write_timeout: "5s" # 姣忔鍐欏寘鐨勮秴鏃舵椂闂� - wait_timeout: "1s" - max_msg_len: 102400 # 鏈€澶ф暟鎹紶杈撻暱搴� - session_name: "client" -``` - -## dubbo-go 蹇€熸帴鍏� - -鍓嶆枃宸茬粡灞曠ず杩� dubbo-go 鍦ㄦ秱楦︽櫤鑳界殑瀹炶返鎴愭灉锛屾帴涓嬫潵浠嬬粛蹇€熸帴鍏� dubbo-go 鐨勬柟寮忋€� - -### 绗竴姝ワ細hello world - -dubbo-go 浣跨敤鑼冧緥鐩墠鍜� dubbo 涓€鑷达紝鏀剧疆鍦� [apache/dubbo-samples](https://github.com/apache/dubbo-samples) 椤圭洰涓€傚湪 dubbo-sample/golang 鐩綍涓嬶紝鐢ㄦ埛鍙互閫夋嫨鑷繁鎰熷叴瓒g殑 feature 鐩綍锛屽揩閫熸祴璇曚唬鐮佹晥鏋溿€� - -```shell -tree dubbo-samples/golang -L 1 -dubbo-samples/golang -鈹溾攢鈹€ README.md -鈹溾攢鈹€ async -鈹溾攢鈹€ ci.sh -鈹溾攢鈹€ configcenter -鈹溾攢鈹€ direct -鈹溾攢鈹€ filter -鈹溾攢鈹€ general -鈹溾攢鈹€ generic -鈹溾攢鈹€ go.mod -鈹溾攢鈹€ go.sum -鈹溾攢鈹€ helloworld -鈹溾攢鈹€ multi_registry -鈹斺攢鈹€ registry -``` - -鎴戜滑浠� hello world 涓轰緥锛屾寜鐓� dubbo-samples/golang/README.md 涓殑姝ラ锛屽垎鍒惎鍔� server 鍜� client 銆傚彲浠ュ皾璇� golang 璋冪敤 java 銆� java 璋冪敤 golang 銆乬olang 璋冪敤 golang 銆乯ava 璋冪敤 java銆俤ubbo-go 鍦ㄥ崗璁笂鏀寔鍜� dubbo 浜掗€氥€� - -鎴戜滑浠ュ惎鍔� go-server 涓轰緥锛屾敞鍐屼腑蹇冮粯璁や娇鐢� zookeeper 銆傞鍏堢‘璁ゆ湰鍦扮殑 zookeeper 鏄惁杩愯姝e父銆傜劧鍚庢墽琛屼互涓嬪懡浠わ紝绱ф帴鐫€浣犲氨鍙互鐪嬪埌浣犵殑鏈嶅姟姝e父鍚姩鐨勬棩蹇椾簡銆� - -```shell -export ARCH=mac -export ENV=dev -cd dubbo-samples/golang/helloworld/dubbo/go-server -sh ./assembly/$ARCH/$ENV.sh -cd ./target/darwin/user_info_server-2.6.0-20200608-1056-dev/ -sh ./bin/load.sh start -``` - -### 绗簩姝ワ細鍦ㄩ」鐩腑浣跨敤 dubbo-go - -涓婇潰锛屾垜浠€氳繃绀惧尯缁存姢鐨勬祴璇曚唬鐮佸拰鍚姩鑴氭湰灏嗙敤渚嬭窇浜嗚捣鏉ャ€傛帴涓嬫潵锛屾垜浠渶瑕佸湪鑷繁鐨勪唬鐮佷腑宓屽叆 dubbo-go 妗嗘灦銆傚緢澶氭湅鍙嬪線寰€鏄湪杩欎竴姝ラ亣鍒伴棶棰橈紝杩欓噷鎴戞暣鐞嗙殑涓€浜涘父瑙侀棶棰橈紝甯屾湜鑳藉府鍒板ぇ瀹躲€� - -##### 1. 鐜鍙橀噺 - -鐩墠 dubbo-go 鏈� 3 涓幆澧冨彉閲忛渶瑕侀厤缃€� - -- `CONF_CONSUMER_FILE_PATH` : Consumer 绔厤缃枃浠惰矾寰勶紝浣跨敤 consumer 鏃跺繀闇€銆� -- `CONF_PROVIDER_FILE_PATH`锛歅rovider 绔厤缃枃浠惰矾寰勶紝浣跨敤 provider 鏃跺繀闇€銆� -- `APP_LOG_CONF_FILE` 锛歀og 鏃ュ織鏂囦欢璺緞锛屽繀闇€銆� -- `CONF_ROUTER_FILE_PATH`锛欶ile Router 瑙勫垯閰嶇疆鏂囦欢璺緞锛屼娇鐢� File Router 鏃堕渶瑕併€� - -##### 2. 浠g爜娉ㄦ剰鐐� - -- 娉ㄥ叆鏈嶅姟 : 妫€鏌ユ槸鍚︽墽琛屼互涓嬩唬鐮� - -- 瀹㈡埛绔� - ```go - func init() { - config.SetConsumerService(userProvider) - } - ``` -- 鏈嶅姟绔� - ```go - func init() { - config.SetProviderService(new(UserProvider)) - } - ``` -- 娉ㄥ叆搴忓垪鍖栨弿杩� 锛氭鏌ユ槸鍚︽墽琛屼互涓嬩唬鐮� - - ```go - hessian.RegisterJavaEnum(Gender(MAN)) - hessian.RegisterJavaEnum(Gender(WOMAN)) - hessian.RegisterPOJO(&User{}) - ``` - -##### 3. 姝g‘鐞嗚В閰嶇疆鏂囦欢 - -- `references/services` 涓嬬殑 key 锛屽涓嬮潰渚嬪瓙鐨� "UserProvider" 闇€瑕佸拰鏈嶅姟 Reference() 杩斿洖鍊间繚鎸佷竴鑷达紝姝や负鏍囪瘑鏀规帴鍙g殑 key銆� - - ```yaml - references: - "UserProvider": - registry: "hangzhouzk" - protocol: "dubbo" - interface: "com.ikurento.user.UserProvider" - cluster: "failover" - methods: - - name: "GetUser" - retries: 3 - ``` - -- 娉ㄥ唽涓績濡傛灉鍙湁涓€涓敞鍐屼腑蹇冮泦缇わ紝鍙渶閰嶇疆涓€涓€傚涓� IP 鐢ㄩ€楀彿闅斿紑锛屽涓嬶細 - - ```yaml - registries: - "hangzhouzk": - protocol: "zookeeper" - timeout: "3s" - address: "172.16.120.181:2181,172.16.120.182:2181" - username: "" - password: "" - ``` - -##### 4. java 鍜� go 鐨勯棶棰� - -- `go` 鍜� `java` 浜や簰鐨勫ぇ灏忓啓 锛歡olang 涓轰簡閫傞厤 java 鐨勯┘宄版牸寮忥紝鍦ㄨ皟鐢� java 鏈嶅姟鏃讹紝浼氳嚜鍔ㄥ皢 method 鍜屽睘鎬ч瀛楁瘝鍙樻垚灏忓啓銆傚緢澶氬悓瀛︽晠鎰忓皢 java 浠g爜鍐欐垚閫傞厤 golang 鐨勫弬鏁板畾涔夛紝灏嗛瀛楁瘝澶у啓锛屾渶鍚庡弽鑰屾棤娉曞簭鍒楀寲鍖归厤銆� - -### 绗笁姝ワ細鎷撳睍鍔熻兘 - -dubbo-go 鍜� dubbo 閮芥彁渚涗簡闈炲父涓板瘜鐨勬嫇灞曟満鍒躲€傚彲浠ュ疄鐜拌嚜瀹氫箟妯″潡浠f浛 dubbo-go 榛樿妯″潡锛屾垨鑰呮柊澧炴煇浜涘姛鑳姐€傛瘮濡傚疄鐜� Cluster銆丗ilter 銆丷outer 绛夋潵閫傞厤涓氬姟鐨勯渶姹傘€傝繖浜涙敞鍏ユ柟娉曟毚闇插湪 dubbo-go/common/extension 涓紝鍏佽鐢ㄦ埛璋冪敤鍙婇厤缃€� - -**_鏈枃浣滆€咃細_** -**娼樺ぉ棰栵紝Github ID @pantianying锛屽紑婧愮埍濂借€咃紝灏辫亴浜庢秱楦︽櫤鑳姐€�** - -## 娆㈣繋鍔犲叆 dubbo-go 绀惧尯 - -鏈変换浣� dubbo-go 鐩稿叧鐨勯棶棰橈紝鍙互鍔犳垜浠殑閽夐拤缇� 23331795 璇㈤棶鎺㈣锛屾垜浠竴瀹氱涓€鏃堕棿缁欏嚭鍙嶉銆� - - -### 鏈€鏂版椿鍔� - -Dubbo-go ASoC [鐩稿叧棰樼洰](https://github.com/apache/dubbo-go/issues?q=is%3Aissue+is%3Aopen+label%3AASOC2020) 锛屽弬鍔犺鎯� [璇风偣鍑籡(https://github.com/apache/dubbo/issues/6203) diff --git a/doc/md/course/quick-start-dubbo-go.md b/doc/md/course/quick-start-dubbo-go.md deleted file mode 100644 index 49d07d824d4f5097cc67774b97239ba07010bf42..0000000000000000000000000000000000000000 --- a/doc/md/course/quick-start-dubbo-go.md +++ /dev/null @@ -1,243 +0,0 @@ -# [蹇€熶笂鎵� dubbo-go](https://studygolang.com/articles/29457) - -## 鍓嶈█ - -姣忔鎶€鏈皟鐮旀€讳細鍙戠幇鑷繁瀛︿笉鍔ㄤ簡鎬庝箞鍔烇紵鐢ㄥ凡鏈夌殑鐭ヨ瘑鏉ユ嫇灞曡瀛︿範鐨勬柊鐭ヨ瘑灏卞ソ浜唦 by LinkinStar - -鏈€杩戦渶瑕佽皟鐮斾娇鐢� dubbo锛屼箣鍓嶅畬鍏ㄦ槸 0 鍩虹锛屽浜� dubbo 鍙瓨鍦ㄤ簬鍚锛屼粖澶╀笂鎵嬪疄鎴樹竴鎶婏紝鍛婅瘔浣犲浣曞揩閫熺敤 go 涓婃墜 dubbo - -PS锛氫互涓嬬殑瀛︿範鏂瑰紡閫傜敤浜庡緢澶氭柊鎶€鏈� - -## 鍩烘湰姒傚康 - -棣栧厛瀛︿範涓€涓妧鏈鍏堣鐪嬬湅瀹冪殑鏁翠綋鏋舵瀯鍜屽熀鏈蹇碉紝姣忎釜鎶€鏈兘鏈夌潃鑷繁鐨勫悕璇嶈В閲婂拰瀹炵幇鏂瑰紡锛屽鏋滄枃妗i綈鍏ㄥ氨绠€鍗曞緢澶氥€� - -http://dubbo.apache.org/zh-cn/docs/user/preface/background.html - -澶ц嚧娴忚浜嗚儗鏅€侀渶姹傘€佹灦鏋勪箣鍚庡熀鏈笂鏈変竴涓ぇ鑷存蹇� - -image.png -鍏跺疄鏁翠綋鏋舵瀯鍜屽緢澶氬井鏈嶅姟鐨勬灦鏋勯兘鏄被浼肩殑锛屽氨鏄湁涓€涓敞鍐屼腑蹇冪鐞嗘墍鏈夌殑鏈嶅姟鍒楄〃锛屾湇鍔℃彁渚涙柟鍏堝悜娉ㄥ唽涓績娉ㄥ唽锛岃€屾秷璐规柟鍚戞敞鍐屼腑蹇冭姹傛湇鍔″垪琛紝閫氳繃鏈嶅姟鍒楄〃璋冪敤鏈€缁堢殑鏈嶅姟銆傛€荤殑鏉ヨ dubbo 灏嗘暣涓繃绋嬪皝瑁呭湪浜嗛噷闈紝鑰屼綔涓轰娇鐢ㄨ€呯殑鎴戜滑鏉ヨ鏇村姞鍏冲績涓氬姟瀹炵幇锛屽畠甯垜浠仛濂戒簡娌荤悊鐨勫伐浣溿€� - -鐒跺悗鎴戞姄浣忎簡鍑犱釜鎴戞兂瑕佺煡閬撶殑閲嶇偣锛� - -娉ㄥ唽涓績鍙浛鎹紝瀹樻柟鎺ㄨ崘鐨勬槸 zk -濡傛灉鏈夊彉鏇达紝娉ㄥ唽涓績灏嗗熀浜庨暱杩炴帴鎺ㄩ€佸彉鏇存暟鎹粰娑堣垂鑰咃紝娉ㄥ唽涓績锛屾湇鍔℃彁渚涜€咃紝鏈嶅姟娑堣垂鑰呬笁鑰呬箣闂村潎涓洪暱杩炴帴 -鍩轰簬杞礋杞藉潎琛$畻娉曪紝閫変竴鍙版彁渚涜€呰繘琛岃皟鐢紝濡傛灉璋冪敤澶辫触锛屽啀閫夊彟涓€鍙拌皟鐢� -娑堣垂鑰呭湪鏈湴缂撳瓨浜嗘彁渚涜€呭垪琛� - -## 瀹為檯涓婃墜 - -瀹樼綉鏂囨。涓篃缁欏嚭濡傛灉浣跨敤 golang 寮€鍙戯紝閭d箞鏈� https://github.com/apache/dubbo-go 鍙互鐢紝閭d箞搴熻瘽涓嶅璇达紝涓婃墜瀹炶返涓€鎶婂厛銆傚洜涓轰綘鐪嬪啀澶氾紝閮芥瘮涓嶄笂瀹炶返涓€鎶婃潵瀛︾殑蹇€� - -### 鐜鎼缓 - -澶у鏁版暀绋嬪氨浼氳窡浣犺锛屼竴涓� helloWorld 闇€瑕� zookeeper 鐜锛屼絾鏄笉鍛婅瘔浣犲浣曟惌寤猴紝鍥犱负杩欏浜庝粬浠潵璇村お绠€鍗曚簡锛岃€屾垜涓嶄竴鏍凤紝鎴戞槸 0 鍩虹锛岄偅濡備綍蹇€熸惌寤轰竴涓渶瑕佽皟鐮旈」鐩殑鐜鍛紵鏈€濂界殑鏂瑰紡灏辨槸 docker銆� - -```yml -version: "3" -services: - zookeeper: - image: zookeeper - ports: - - 2181:2181 - admin: - image: apache/dubbo-admin - depends_on: - - zookeeper - ports: - - 8080:8080 - environment: - - admin.registry.address=zookeeper://zookeeper:2181 - - admin.config-center=zookeeper://zookeeper:2181 - - admin.metadata-report.address=zookeeper://zookeeper:2181 -``` - -```yml -version: "3" -services: - zookeeper: - image: zookeeper - ports: - - 2181:2181 - admin: - image: chenchuxin/dubbo-admin - depends_on: - - zookeeper - ports: - - 8080:8080 - environment: - - dubbo.registry.address=zookeeper://zookeeper:2181 - - dubbo.admin.root.password=root - - dubbo.admin.guest.password=guest -``` - -涓婇潰涓や釜 docker-compose 鏂囦欢涓€涓槸瀹樻柟鎻愪緵鐨勭鐞嗗伐鍏凤紝涓€涓寘鍚殑鏄釜浜轰慨鏀逛箣鍚庣殑绠$悊宸ュ叿锛岃浣忚繖閲屾湁涓敤鎴峰悕瀵嗙爜鏄� root-root锛岀湅浣犲枩娆� - -搴熻瘽涓嶅璇达紝鐩存帴鍒涘缓 docker-compose.yaml 鐒跺悗 `docker-compose up` 浣犲氨寰楀埌浜嗕竴涓幆澧冿紝妫� 馃憤 - -### 鏍蜂緥涓嬭浇 - -鏈夌殑鎶€鏈細缁欏嚭瀹樻柟鐨勫疄楠屾牱渚嬶紝dubbo-go 涔熶笉渚嬪 - -https://github.com/apache/dubbo-samples - -閲岄潰鍖呭惈浜� go 鍜� java 鐨勬牱渚嬶紝鏈変簡瀹冧綘灏辫兘蹇€熶笂鎵嬩簡锛屾妸瀹冧笅杞藉埌鏈湴 - -### 鏍蜂緥杩愯 - -棣栧厛瑕佸仛鐨勭涓€姝ュ氨鏄妸 helloworld 缁欒窇璧锋潵锛岃繘鍏� golang 鐩綍锛岄噷闈㈡湁涓� README.md 鐪嬩竴涓嬨€傜劧鍚庡紑鎼炪€� - -鎵撳紑涓€涓粓绔繍琛屾湇鍔℃柟 -```sh -export ARCH=mac -export ENV=dev -cd helloworld/dubbo/go-server -sh ./assembly/$ARCH/$ENV.sh -cd ./target/linux/user_info_server-0.3.1-20190517-0930-release -sh ./bin/load.sh start -``` -鎵撳紑鍙︿竴涓粓绔繍琛屽鎴风 - -```sh -export ARCH=mac -export ENV=dev -cd helloworld/dubbo/go-client -sh ./assembly/$ARCH/$ENV.sh -cd ./target/linux/user_info_client-0.3.1-20190517-0921-release -sh ./bin/load_user_info_client.sh start -``` -鍚姩杩囩▼涓細鍑虹幇涓€浜涜鍛婏紝闂涓嶅ぇ锛屽鏋滄垚鍔燂紝閭d箞瀹㈡埛绔細鏈変竴涓皟鐢ㄦ湇鍔$鐨勮姹傦紝骞跺湪鎺у埗鍙颁腑浠ョ櫧鑹插簳鑹茶繘琛屾墦鍗� - -image.png -java 鐨勬湇鍔′篃鏈夌浉瀵瑰簲鐨勫惎鍔ㄦ柟寮忥紝鎸夌収 README 涓墍璇存槑鐨勪篃鍙互杩涜娉ㄥ唽鍜岃皟鐢紝骞朵笖 java 鍜� go 涔嬮棿鏄彲浠ヤ簰鐩歌皟鐢ㄧ殑 - -### 鏌ョ湅鏈嶅姟 - -鍥犱负鎴戜滑閮ㄧ讲鐨勬椂鍊欐湁涓€涓� dubbo-admin 鐢ㄤ簬绠$悊 zk 涓婃敞鍐岀殑鏈嶅姟锛屾垜浠彲浠ヨ闂湰鍦扮殑 8080 绔彛鐪嬪埌瀵瑰簲鐨勬湇鍔℃儏鍐� - -image.png -鑷虫浣犲簲璇ュ凡缁忓浜庢暣浣撶殑閾捐矾璋冪敤鏈変竴涓ぇ鑷寸殑璁よ瘑锛岀粨鍚堜箣鍓嶅畼缃戞枃妗g殑涓殑鏋舵瀯鍥撅紝搴旇涔熸竻鏅颁簡銆� - -## 濡備綍浣跨敤 - -閭d箞鐜板湪浣犲凡缁忚繍琛岃捣鏉ヤ簡锛岄偅涔堝娍蹇呭氨瑕佹潵鐪嬬湅鍏蜂綋鏄浣曡繘琛屼娇鐢ㄧ殑浜嗐€� - -### 鏈嶅姟绔� - -鏈嶅姟绔紝涔熷氨鏄湇鍔℃彁渚涜€咃紱 - -浣嶇疆鍦細dubbo-samples/golang/helloworld/dubbo/go-server/app - -```go -// 灏嗘湇鍔¤繘琛屾敞鍐� -config.SetProviderService(new(UserProvider)) -// 娉ㄥ唽瀵硅薄鐨刪essian搴忓垪鍖� -hessian.RegisterPOJO(&User{}) -``` - -鏄笉鏄湅璧锋潵鍏跺疄寰堢畝鍗曪紝鍏跺疄閲嶇偣灏辨槸涓婇潰涓ゅ彞浠g爜浜� -瀵逛簬鏈嶅姟鏈韩鏉ヨ - -```go -type UserProvider struct { -} - -func (u *UserProvider) GetUser(ctx context.Context, req []interface{}) (*User, error) { - println("req:%#v", req) - rsp := User{"A001", "Alex Stocks", 18, time.Now()} - println("rsp:%#v", rsp) - return &rsp, nil -} - -func (u *UserProvider) Reference() string { - return "UserProvider" -} -``` - -鍏跺疄灏辨槸闇€瑕佸疄鐜颁笅闈㈤偅涓帴鍙e氨鍙互浜� - -```go -// rpc service interface -type RPCService interface { - Reference() string // rpc service id or reference id -} -``` - -鍏朵腑鏈変竴姝ラ涓嶈蹇樿浜嗘槸 config.Load()锛屼細鍔犺浇閰嶇疆鏂囦欢鐨勭浉鍏抽厤缃紝涓嶇劧浣犱互涓烘敞鍐屼腑蹇冪殑鍦板潃绛夌瓑鏄湪鍝噷閰嶇疆鐨勫憿锛� - -瀹㈡埛绔� -鐪嬩簡鏈嶅姟绔紝鍏跺疄瀹㈡埛绔篃灏卞緢绠€鍗曚簡 - -```go -config.SetConsumerService(userProvider) -hessian.RegisterPOJO(&User{}) -``` - -鍏跺疄涔熸槸宸笉澶氱殑锛屼篃闇€瑕佹敞鍐屼竴涓秷璐规湇鍔★紝骞跺皢搴忓垪鍖栨柟寮忕粰娉ㄥ唽涓婂幓 - -```go -user := &User{} -err := userProvider.GetUser(context.TODO(), []interface{}{"A001"}, user) -``` - -浣跨敤涔熷氨寰堢畝鍗曚簡锛屽悓鏍风殑涔熼渶瑕佸疄鐜� Reference 鎺ュ彛 - -```go -type UserProvider struct { - GetUser func(ctx context.Context, req []interface{}, rsp *User) error -} - -func (u *UserProvider) Reference() string { - return "UserProvider" -} -``` - -鍥炲ご鎯虫兂 -褰撴垜浠湅瀹屼簡浠g爜鐨勪笂鐨勪娇鐢紝鍐嶅洖澶存兂鎯� dubbo 鐨勪綔鐢紝浣犲氨浼氬彂鐜板叾瀹� dubbo 甯綘鍋氱殑浜嬫儏鐪熺殑灞忚斀浜嗗緢澶氥€� - -- 浣犱笉闇€瑕佸叧蹇冩湇鍔℃槸鎬庝箞娉ㄥ唽鐨� -- 浣犱笉闇€瑕佸叧蹇冩湇鍔℃槸鎬庝箞鑾峰彇鐨� -- 浣犱笉闇€瑕佸叧绯绘湇鍔℃槸鎬庝箞璋冪敤鐨� -- 鐢氳嚦搴忓垪鍖栫殑杩囩▼閮芥槸鍩烘湰閫忔槑鐨� -- 鎯冲姣旀潵璇达紝濡傛灉璁╀綘鑷繁鍘绘槸瀹炵幇寰湇鍔★紝閭f槸涓嶆槸璇达紝浣犻渶瑕佸疄鐜版湇鍔$殑鎷夊彇锛屾湇鍔$殑璐熻浇鍧囪 锛屾湇鍔$殑鍙戠幇锛屽簭鍒楀寲..... - -杩欎笅浣犲簲璇ユ槑鐧戒簡 dubbo 鏄仛浠€涔堢殑涔熷氨鏄庣櫧浜嗗畠涓轰粈涔堜細鍑虹幇浜� - -## 鍏朵粬鑳藉姏 - -褰撲綘瀛︿範浜嗕竴涓妧鏈殑鍩烘湰浣跨敤涔嬪悗锛岃瀛︿範鍏朵粬鐨勮兘鍔涳紝浠ヤ究鍦ㄤ娇鐢ㄧ殑杩囩▼涓笉浼氬嚭鐜拌嚜宸遍噸澶嶉€犺疆瀛愭垨鑰呰鏈夎疆瀛愭病鐢ㄥ埌鐨勬儏鍐碉紝https://github.com/apache/dubbo-samples 涓嶆鏈� helloworld 杩樿寰堝鍒殑妗堜緥渚涗綘鍙傝€冿紝浣犲彲浠ョ户缁湅鐪嬪苟杩涜璇曢獙銆� - -### 鏀寔鎵╁睍 - -https://github.com/apache/dubbo-go - -鍦� Feature list 涓垪涓句簡 dubbo-go 鎵€鏀寔鐨勭浉鍏冲姛鑳斤紝姣斿搴忓垪鍖栵紝姣斿娉ㄥ唽涓績锛屽湪姣斿杩囨护鍣ㄣ€� - -涔熷氨鏄锛屽湪浣跨敤 dubbo-go 鐨勬椂鍊欑浉鍏冲姛鑳介兘鏄彃浠跺寲鐨勶紝鎯崇敤浠€涔堝氨鐪嬩綘鑷繁浜嗭紝姣斿娉ㄥ唽涓績鎴戞兂鐢� etcd锛屾瘮濡傝皟鐢ㄧ殑鍗忚鎴戞兂鎹㈡垚 grpc 閮藉彲浠ャ€� - -## 鐩稿叧闂 - -瀵逛簬涓€涓妧鏈皟鐮旓紝閭d箞鑲畾浼氭湁鐩稿叧闂绛夌潃浣犲幓鍙戠幇鍘昏€冭檻銆� - -涓嬮潰鏄垜鑳芥兂鍒扮殑涓€浜涢棶棰橈細 - -褰撳墠 dubbo-go 鐨勭増鏈渶楂樺湪 1.4锛屾墍瀵瑰簲鐨� dubbo 鐗堟湰搴旇鏄� 2.6.x锛屽鏋滆皟鐢ㄦ洿楂樼増鏈殑鏈嶅姟鏄惁浼氭湁闂 -java 鍜� go 涔嬮棿浜掔浉璋冪敤锛屽悇绉嶇被鍨嬭浆鎹箣闂存槸鍚﹀瓨鍦ㄩ棶棰橈紝鏄惁瀹规槗鍑虹幇鏃犳硶姝g‘鍙嶅簭鍒楀寲鐨勯棶棰� - - -## 鍚庣画瀛︿範 - -閭d箞涓婇潰鍙槸璇磋兘璁╀綘涓婃墜 dubbo-go锛屼絾鏄疄闄呬娇鐢ㄥ彲鑳藉瓨鍦ㄨ窛绂汇€備负浠€涔堣繖涔堣鍛紵濡傛灉浣犲湪涓嶅姩閲岄潰浠讳綍鐨勫師鐞嗘儏鍐典笅锛岄偅涔堝鏋滈亣鍒伴棶棰橈紝浣犲緢鍙兘灏辨潫鎵嬫棤绛栦簡銆傛瘮濡傚鏋滅嚎涓婃湇鍔℃棤娉曟甯稿彂鐜帮紝浣犲簲璇ュ浣曟帓鏌ワ紵璋冪敤杩囩▼涓嚭鐜伴棶棰樺浣曞畾浣嶏紵 - -鎵€浠ュ悗缁綘闇€瑕佸仛鐨勬槸锛� - -鐪嬬湅鏁翠綋璁捐鏋舵瀯鍜屾€濊矾锛屾槑鐧芥暣鏉¢摼璺皟鐢ㄨ繃绋嬪拰瑙勫垯 -瀛︿範瀹冪殑鎺ュ彛璁捐锛屼负浠€涔堝埆浜鸿璁$殑鎺ュ彛鑳藉吋瀹归偅涔堝鐨勬敞鍐屼腑蹇冿紵濡傛灉璁╀綘鏉ヨ璁′綘鎬庝箞璁捐鍛紵 -鎬ц兘涔熷緢閲嶈锛岀綉涓婅鎬ц兘寰堜笉閿欙紝涓轰粈涔堝憿锛熶粈涔堝湴鏂瑰仛浜嗕紭鍖栵紝璐熻浇鍧囪 鐨勭畻娉曟槸鎬庝箞鏍风殑锛屼綘鑳借嚜瀹氫箟鍚楋紵 - -## 鎬荤粨 - -鎬荤殑鏉ヨ锛屽浜� dubbo-go 鏁翠綋鐨勪娇鐢ㄤ笂杩樻槸闈炲父濂戒笂鎵嬬殑锛岃嚜宸辨兂浜嗕竴涓嬶紝濡傛灉褰撳墠椤圭洰鎯宠鎺ュ叆鐨勮瘽锛屼富瑕佹槸鏈嶅姟鐨勬毚闇层€佸簭鍒楀寲鏂瑰紡銆侀壌鏉冭皟鏁寸瓑瀛樺湪寮€鍙戝伐浣溿€� - -涓婇潰鐮栧ご涔熸姏鐨勫樊涓嶅浜嗭紝瀵逛簬浣犲揩閫熶笂鎵嬪簲璇ユ病鏈夐棶棰樹簡锛屽墿涓嬬殑灏辫闈犱綘鑷繁浜嗐€� diff --git a/doc/md/course/quick-start.md b/doc/md/course/quick-start.md deleted file mode 100644 index e2307454c95c5d022dce2db0637ea46bc0b55ef0..0000000000000000000000000000000000000000 --- a/doc/md/course/quick-start.md +++ /dev/null @@ -1,256 +0,0 @@ ---- -title: 蹇€熷紑濮� -keywords: 蹇€熷紑濮�, hellowworld, Provider -description: 蹇€熶笂鎵媎ubbo-go锛岀紪鍐欎竴涓畝鍗曠殑hellowworld搴旂敤 ---- - -# [蹇€熷紑濮媇(<(https://github.com/dubbogo/dubbo-go-website/blob/master/docs/zh-cn/user/quick-start.md)>) - -閫氳繃涓€涓� `hellowworld` 渚嬪瓙甯﹂澶у蹇€熶笂鎵� Dubbo-go 妗嗘灦銆� - -鍗忚锛欴ubbo -缂栫爜锛欻essian2 -娉ㄥ唽涓績锛歓ookeeper - -## 鐜 - -- Go 缂栫▼鐜 -- 鍚姩 zookeeper 鏈嶅姟锛屼篃鍙互浣跨敤杩滅▼瀹炰緥 - -## 浠庢湇鍔$寮€濮� - -### 绗竴姝ワ細缂栧啓 `Provider` 缁撴瀯浣撳拰鎻愪緵鏈嶅姟鐨勬柟娉� - -> <https://github.com/dubbogo/dubbo-samples/blob/master/golang/helloworld/dubbo/go-server/app/user.go> - -1. 缂栧啓闇€瑕佽缂栫爜鐨勭粨鏋勪綋锛岀敱浜庝娇鐢� `Hessian2` 浣滀负缂栫爜鍗忚锛宍User` 闇€瑕佸疄鐜� `JavaClassName` 鏂规硶锛屽畠鐨勮繑鍥炲€煎湪 dubbo 涓搴� User 绫荤殑绫诲悕銆� - -```go -type User struct { - Id string - Name string - Age int32 - Time time.Time -} - -func (u User) JavaClassName() string { - return "com.ikurento.user.User" -} -``` - -2. 缂栧啓涓氬姟閫昏緫锛宍UserProvider` 鐩稿綋浜� dubbo 涓殑涓€涓湇鍔″疄鐜般€傞渶瑕佸疄鐜� `Reference` 鏂规硶锛岃繑鍥炲€兼槸杩欎釜鏈嶅姟鐨勫敮涓€鏍囪瘑锛屽搴� dubbo 鐨� `beans` 鍜� `path` 瀛楁銆� - -```go -type UserProvider struct { -} - -func (u *UserProvider) GetUser(ctx context.Context, req []interface{}) (*User, error) { - println("req:%#v", req) - rsp := User{"A001", "hellowworld", 18, time.Now()} - println("rsp:%#v", rsp) - return &rsp, nil -} - -func (u *UserProvider) Reference() string { - return "UserProvider" -} -``` - -3. 娉ㄥ唽鏈嶅姟鍜屽璞� - -```go -func init() { - config.SetProviderService(new(UserProvider)) - // ------for hessian2------ - hessian.RegisterPOJO(&User{}) -} -``` - -### 绗簩姝ワ細缂栧啓涓荤▼搴� - -> <https://github.com/dubbogo/dubbo-samples/blob/master/golang/helloworld/dubbo/go-server/app/server.go> - -1. 寮曞叆蹇呴渶鐨� dubbo-go 鍖� - -```go -import ( - hessian "github.com/apache/dubbo-go-hessian2" - "github.com/apache/dubbo-go/config" - _ "github.com/apache/dubbo-go/registry/protocol" - _ "github.com/apache/dubbo-go/common/proxy/proxy_factory" - _ "github.com/apache/dubbo-go/filter/impl" - _ "github.com/apache/dubbo-go/cluster/cluster_impl" - _ "github.com/apache/dubbo-go/cluster/loadbalance" - _ "github.com/apache/dubbo-go/registry/zookeeper" - - _ "github.com/apache/dubbo-go/protocol/dubbo" -) - -``` - -2. main 鍑芥暟 - -```go -func main() { - config.Load() -} -``` - -### 绗笁姝ワ細閰嶇疆 - -#### 1.浣跨敤鐜鍙橀噺 - -1. 鍙傝€� [log](https://github.com/dubbogo/dubbo-samples/blob/master/golang/helloworld/dubbo/go-server/profiles/release/log.yml) 鍜� [server](https://github.com/dubbogo/dubbo-samples/blob/master/golang/helloworld/dubbo/go-server/profiles/release/server.yml) 缂栬緫閰嶇疆鏂囦欢銆� - -涓昏缂栬緫浠ヤ笅閮ㄥ垎锛� - -- `registries` 缁撶偣涓嬮渶瑕侀厤缃� zk 鐨勬暟閲忓拰鍦板潃 - -- `services` 缁撶偣涓嬮厤缃湇鍔$殑鍏蜂綋淇℃伅锛岄渶瑕侀厤缃� `interface` 閰嶇疆锛屼慨鏀逛负瀵瑰簲鏈嶅姟鐨勬帴鍙e悕锛屾湇鍔$殑 key 瀵瑰簲绗竴姝ヤ腑 `Provider` 鐨� `Reference` 杩斿洖鍊� - -2. 鎶婁笂闈㈢殑涓や釜閰嶇疆鏂囦欢鍒嗗埆閰嶇疆涓虹幆澧冨彉閲� - -```shell -export CONF_PROVIDER_FILE_PATH="xxx" -export APP_LOG_CONF_FILE="xxx" -``` - -#### 2.鑷畾涔夐厤缃枃浠� - -1. var consumerConfigStr = `xxxxx`// 閰嶇疆鏂囦欢鍐呭锛屽彲浠ュ弬鑰僛log](https://github.com/dubbogo/dubbo-samples/blob/master/golang/helloworld/dubbo/go-client/profiles/release/log.yml) 鍜� [client](https://github.com/dubbogo/dubbo-samples/blob/master/golang/helloworld/dubbo/go-client/profiles/release/client.yml) - - - 鍦ㄨ繖閲屼綘鍙互瀹氫箟閰嶇疆鏂囦欢鐨勮幏鍙栨柟寮忥紝姣斿閰嶇疆涓績锛屾湰鍦版枃浠惰鍙� - -2. 鍦╜config.Load()`涔嬪墠璁剧疆閰嶇疆 - -```go -func main() { - hessian.RegisterPOJO(&User{}) - providerConfig := config.ProviderConfig{} - yaml.Unmarshal([]byte(providerConfigStr), &providerConfig) - config.SetProviderConfig(providerConfig) - defaultServerConfig := dubbo.GetDefaultServerConfig() - dubbo.SetServerConfig(defaultServerConfig) - logger.SetLoggerLevel("warn") // info,warn - config.Load() - select { - } -} -``` - -## 鎺ョ潃鏄鎴风 - -### 绗竴姝ワ細缂栧啓瀹㈡埛绔� `Provider` - -> <https://github.com/dubbogo/dubbo-samples/blob/master/golang/helloworld/dubbo/go-client/app/user.go> - -1. 鍙傝€冩湇鍔$绗竴姝ョ殑绗竴鐐广€� - -2. 涓庢湇鍔$涓嶅悓鐨勬槸锛屾彁渚涙湇鍔$殑鏂规硶浣滀负缁撴瀯浣撶殑鍙傛暟锛屼笉闇€瑕佺紪鍐欏叿浣撲笟鍔¢€昏緫銆傚彟澶栵紝`Provider` 涓嶅搴� dubbo 涓殑鎺ュ彛锛岃€屾槸瀵瑰簲涓€涓疄鐜般€� - -```go -type UserProvider struct { - GetUser func(ctx context.Context, req []interface{}, rsp *User) error -} - -func (u *UserProvider) Reference() string { - return "UserProvider" -} -``` - -3. 娉ㄥ唽鏈嶅姟鍜屽璞� - -```go -func init() { - config.SetConsumerService(userProvider) - hessian.RegisterPOJO(&User{}) -} -``` - -### 绗簩姝ワ細缂栧啓瀹㈡埛绔富绋嬪簭 - -> <https://github.com/dubbogo/dubbo-samples/blob/master/golang/helloworld/dubbo/go-client/app/client.go> - -1. 寮曞叆蹇呴渶鐨� dubbo-go 鍖� - -```go -import ( - hessian "github.com/apache/dubbo-go-hessian2" - "github.com/apache/dubbo-go/config" - _ "github.com/apache/dubbo-go/registry/protocol" - _ "github.com/apache/dubbo-go/common/proxy/proxy_factory" - _ "github.com/apache/dubbo-go/filter/impl" - _ "github.com/apache/dubbo-go/cluster/cluster_impl" - _ "github.com/apache/dubbo-go/cluster/loadbalance" - _ "github.com/apache/dubbo-go/registry/zookeeper" - - _ "github.com/apache/dubbo-go/protocol/dubbo" -) -``` - -2. main 鍑芥暟 - -```go -func main() { - config.Load() - time.Sleep(3e9) - - println("\n\n\nstart to test dubbo") - user := &User{} - err := userProvider.GetUser(context.TODO(), []interface{}{"A001"}, user) - if err != nil { - panic(err) - } - println("response result: %v\n", user) -} -func println(format string, args ...interface{}) { - fmt.Printf("\033[32;40m"+format+"\033[0m\n", args...) -} -``` - -### 绗笁姝ワ細閰嶇疆 - -#### 1.浣跨敤鐜鍙橀噺 - -1. 鍙傝€� [log](https://github.com/dubbogo/dubbo-samples/blob/master/golang/helloworld/dubbo/go-client/profiles/release/log.yml) 鍜� [client](https://github.com/dubbogo/dubbo-samples/blob/master/golang/helloworld/dubbo/go-client/profiles/release/client.yml) 缂栬緫閰嶇疆鏂囦欢銆� - -涓昏缂栬緫浠ヤ笅閮ㄥ垎锛� - -- `registries` 缁撶偣涓嬮渶瑕侀厤缃� zk 鐨勬暟閲忓拰鍦板潃 - -- `references` 缁撶偣涓嬮厤缃湇鍔$殑鍏蜂綋淇℃伅锛岄渶瑕侀厤缃� `interface` 閰嶇疆锛屼慨鏀逛负瀵瑰簲鏈嶅姟鐨勬帴鍙e悕锛屾湇鍔$殑 key 瀵瑰簲绗竴姝ヤ腑 `Provider` 鐨� `Reference` 杩斿洖鍊� - -2. 鎶婁笂闈㈢殑涓や釜閰嶇疆鏂囦欢璐瑰埆閰嶇疆涓虹幆澧冨彉閲忥紝涓洪槻姝� log 鐨勭幆澧冨彉閲忓拰鏈嶅姟绔殑 log 鐜鍙橀噺鍐茬獊锛屽缓璁墍鏈夌殑鐜鍙橀噺涓嶈鍋氬叏灞€閰嶇疆锛屽湪褰撳墠璧锋晥鍗冲彲銆� - -```shell -export CONF_CONSUMER_FILE_PATH="xxx" -export APP_LOG_CONF_FILE="xxx" -``` - -#### 2.鑷畾涔夐厤缃枃浠� - -1. var consumerConfigStr = `xxxxx`// 閰嶇疆鏂囦欢鍐呭锛屽彲浠ュ弬鑰僛log](https://github.com/dubbogo/dubbo-samples/blob/master/golang/helloworld/dubbo/go-client/profiles/release/log.yml) 鍜� [client](https://github.com/dubbogo/dubbo-samples/blob/master/golang/helloworld/dubbo/go-client/profiles/release/client.yml) - - - 鍦ㄨ繖閲屼綘鍙互瀹氫箟閰嶇疆鏂囦欢鐨勮幏鍙栨柟寮忥紝姣斿閰嶇疆涓績锛屾湰鍦版枃浠惰鍙� - -2. 鍦╜config.Load()`涔嬪墠璁剧疆閰嶇疆 - -```go -func main() { - p := config.ConsumerConfig{} - yaml.Unmarshal([]byte(consumerConfigStr), &p) - config.SetConsumerConfig(p) - defaultClientConfig := dubbo.GetDefaultClientConfig() - dubbo.SetClientConf(defaultClientConfig) - logger.SetLoggerLevel("warn") // info,warn - config.Load() - - user := &User{} - err := userProvider.GetUser(context.TODO(), []interface{}{"A001"}, user) - if err != nil { - log.Print(err) - return - } - log.Print(user) -} -``` diff --git a/doc/md/course/ten-year-dubbo.md b/doc/md/course/ten-year-dubbo.md deleted file mode 100644 index b1bd9bbf0071c02335a109e1b62572fa7f625330..0000000000000000000000000000000000000000 --- a/doc/md/course/ten-year-dubbo.md +++ /dev/null @@ -1,209 +0,0 @@ -# [閮藉凡缁忓崄宀佺殑 Apache Dubbo锛岃繕鑳藉啀涔橀鐮存氮鍚楋紵](https://my.oschina.net/u/3874284/blog/4338792) - -绾佃涓浗寮€婧愬巻鍙诧紝浣犵湡鐨勬病娉曟壘鍒扮浜屼釜鍍� Dubbo 涓€鏍疯嚜甯︿簤璁拰璁ㄨ鐑害鐨勫紑婧愰」鐩€� - -涓€鏂归潰锛�2011 骞达紝瀹冪殑寮€婧愬~琛ヤ簡褰撴椂鐢熶骇鐜浣跨敤鐨� RPC 妗嗘灦鐨勭┖鐧斤紝涓€鍙戝竷灏辫骞挎硾閲囩敤锛涘彟涓€鏂归潰锛屽畠缁忓巻浜嗗仠姝㈢淮鎶ゃ€侀噸鍚淮鎶ゅ悗鎹愮尞缁� Apache 鍩洪噾浼氥€佹帴鐫€鍙堜互椤剁骇椤圭洰鐨勮韩浠芥瘯涓氥€� - -闈㈠澶氱枒鐨勫紑鍙戣€咃紝鍦ㄤ簯鍘熺敓鏃朵唬锛孉pache Dubbo 灏嗗浣曞欢缁綋鍓嶅厜鑺掞紵 - -浠婂勾鏄� Dubbo 浠� Apache 鍩洪噾浼氭瘯涓氱殑涓€鍛ㄥ勾锛屽悓鏃朵篃鏄帹杩� Dubbo 3.0锛屽嵆鍏ㄩ潰鎷ユ姳浜戝師鐢熺殑閲嶈涓€骞淬€傚紑婧愪腑鍥戒笌 Apaceh Dubbo 鍏卞悓绛栧垝**銆怐ubbo 浜戝師鐢熶箣璺€�**绯诲垪鏂囩珷锛屽拰澶у涓€璧峰洖椤� Apache Dubbo 绀惧尯鐨勫彂灞曘€傜郴鍒楁枃绔犱富瑕佹兜鐩� Dubbo 鎶€鏈В璇汇€佺ぞ鍖恒€佸簲鐢ㄦ渚嬭В鏋愪笁澶ч儴鍒嗭紝涔嬪悗姣忓懆閮戒細鍜屽ぇ瀹惰闈€€� - -鍦ㄣ€愰樋閲屽反宸翠簯鍘熺敓鍏紬鍙枫€戠暀瑷€璇村嚭涓� Apache Dubbo 鐨勬晠浜嬶紝鐐硅禐鎺掑悕鍓嶅崄鐨勫悓瀛﹀彲棰嗗彇 Dubbo 閫佸嚭鐨勪笓灞炲鍝佹澂瀛愪竴鍙紱鍙﹀鐢� Apache Dubbo PMC @Chickenlj 闅忔満鎶藉彇涓€鍚嶅垢杩愯鑰咃紝璧犻€佷环鍊� 260 鍏冩姢鐪肩伅涓€鍙般€備笅鍛ㄤ笁寮€濂栥€� - -### 浣滆€呯畝浠� - -**鍒樺啗**锛岃姳鍚嶉檰榫燂紝GitHub 璐﹀彿 Chickenlj锛孉pache Dubbo PMC锛岄」鐩牳蹇冨紑鍙戯紝瑙佽瘉浜� Dubbo 閲嶅惎寮€婧愶紝鍒颁粠 Apache 鍩洪噾浼氭瘯涓氱殑鏁翠釜杩囩▼銆傜幇浠昏亴闃块噷浜戜簯鍘熺敓搴旂敤骞冲彴鍥㈤槦锛屽弬涓庢湇鍔℃鏋躲€佸井鏈嶅姟鐩稿叧宸ヤ綔锛岀洰鍓嶄富瑕佸湪鎺ㄥ姩 Dubbo 3.0 - Dubbo 浜戝師鐢熴€� - -## 绯诲垪寮€绡囷細3.0 鍏ㄩ潰閾哄紑銆丄SF 姣曚笟涓€鍛ㄥ勾 - -浠� 2019 骞村埌鐜板湪锛屽湪 Dubbo 姣曚笟鐨勮繖涓€骞存椂闂撮噷锛孌ubbo 绀惧尯鍜屼骇鍝侀兘鍙栧緱闀胯冻杩涙锛屽悓鏃� Dubbo 浜戝師鐢熺増鏈� - Dubbo 3.0 鐨勫紑鍙戝伐浣滀篃宸茬粡鍏ㄩ潰閾哄紑銆� - -绀惧尯鏂归潰銆傞渶瑕侀噸鐐规彁鍙婄殑鏈変袱鐐癸細涓€涓槸钀藉湴涓庤础鐚殑浼佷笟鐢ㄦ埛杩涗竴姝ュ鍔狅紝涓诲姩涓庣ぞ鍖哄彇寰楄仈绯荤殑涓€佸ぇ瑙勬ā鍏徃杈� 200 澶氬锛屽鎼虹▼銆佸伐鍟嗛摱琛屻€佺摐瀛愪簩鎵嬭溅銆佺綉鑱旀竻绠椼€佷腑閫氱瓑锛涘彟涓€涓槸浠� Dubbo-go 涓轰唬琛ㄧ殑瀛愮ぞ鍖鸿摤鍕冨彂灞曘€� - -浜у搧鎶€鏈紨杩涙柟闈€€侱ubbo Java 鐗堝彂甯� 10 涓増鏈紝鍦ㄥ璇█銆佸崗璁€佹€ц兘銆佹湇鍔℃不鐞嗘ā鍨嬬瓑鏂归潰閮芥湁娣卞害鎺㈢储銆侱ubbo go 鍙戝竷瓒呰繃 8 涓増鏈紝鍦ㄥ姛鑳藉熀鏈榻� Java 鐗堟湰鐨勫熀纭€涓婏紝涓€浜涙柟鍚戜笂涔熷凡缁忚蛋鍦ㄤ簡 Java 鐗堟湰鍓嶉潰銆� - -鍊煎緱涓€鎻愮殑鏄紝闃块噷宸村反鍐呴儴涔熸鍦ㄧН鏋佹帹鍔� Dubbo 绀惧尯鐗堟湰鍦ㄥ唴閮ㄧ殑钀藉湴锛屼粠浠婂勾寮€濮嬮€愭瀹炵幇浠� Dubbo 鏇挎崲鍏跺唴閮ㄧ殑 HSF 妗嗘灦銆傝繖涓€鏂归潰鏈夊埄浜庨樋閲屽皢鍏跺湪 HSF 涓婄殑涓板瘜鏈嶅姟娌荤悊缁忛獙鍥為杈撳嚭鍒扮ぞ鍖猴紝鍙︿竴鏂归潰闃块噷瀹樻柟鐨勮惤鍦颁篃灏嗙洿鎺ュ姞閫� Dubbo 浜戝師鐢熺殑鍙戝睍銆� - -鍦ㄤ簯鍘熺敓澶ф疆涓嬶紝3.0 宸茶姝e紡鍒椾负浠婂勾 Dubbo 浜у搧寤鸿鐨勬牳蹇冪洰鏍囷紝娑夊強涓嬩竴浠� RPC 鍗忚銆佹湇鍔℃不鐞嗘ā鍨嬨€佷簯鍘熺敓鍩虹璁炬柦閫傞厤绛夊鏂归潰鐨勫唴瀹广€傚叾涓紝寰堝鏂归潰宸茬粡鍦ㄥ綋鍓嶇殑 2.7 鐗堟湰涓仛浜嗗墠缃€ф帰绱紝濡傝繎鏈熷彂甯冪殑鍩轰簬 HTTP/2 鐨勫崗璁敮鎸併€佸簲鐢ㄧ骇鏈嶅姟鍙戠幇绛夛紝鍚庣画宸ヤ綔灏嗕互姝や负鍩虹灞曞紑銆傜郴鍒楁枃绔犱篃浼氭湁瀵� Dubbo 3.0 Roadmap 鍙婃妧鏈柟妗堢殑璇︾粏瑙f瀽銆� - -## Dubbo 姣曚笟涓€鍛ㄥ勾鍥為【 - -2017 骞� 7 鏈堬紝Dubbo 寮€婧愰」鐩閲嶆柊婵€娲伙紝2018 骞存崘鐚埌 Apache 鍩洪噾浼氾紝2019 骞� 5 鏈堬紝Dubbo 姝e紡浠� Apache 鍩洪噾浼氬鍖栨瘯涓氾紝鎴愪负 Apache 椤剁骇椤圭洰銆傛帴涓嬫潵锛屾枃绔犲垎鍒粠绀惧尯銆佸瓙绀惧尯銆佷骇鍝佷笁鏂归潰浠嬬粛 Dubbo 杩囧幓涓€骞寸殑鎴愮哗銆� - -### 绀惧尯涓€骞村彂甯� 24 涓増鏈紝璐$尞鑰呭凡瓒� 300 - -濡傛灉璇存渶寮€濮嬮噸鏂版縺娲绘槸浠ラ樋閲屽反宸翠负涓诲鐨勯」鐩淮鎶ゆ姇鍏ワ紝閭h嚜 Dubbo 鍔犲叆 Apache 璧凤紝瀹冨氨宸茬粡寮€濮嬫垚涓轰竴涓ぞ鍖轰富瀵笺€佺ぞ鍖鸿础鐚负涓荤殑瀹屽叏寮€鏀剧殑鍩洪噾浼氶」鐩€� - -鍒颁粖澶╋紝杩欎竴瓒嬪娍姝e彉寰楁洿鏄庢樉銆傚寘鎷樋閲屽反宸淬€佹惡绋嬨€佸伐鍟嗛摱琛屻€佺摐瀛愪簩鎵嬭溅銆佺綉鑱旀竻绠椼€佷腑閫氱瓑鍦ㄥ唴鐨勪簰鑱旂綉銆佷紶缁熶紒涓氬叕鍙革紝鍦� Dubbo 鐨勪娇鐢ㄤ笌绀惧尯浠g爜璐$尞涓婇兘鏈夋姇鍏ャ€侱ubbo 绀惧尯姝e彉寰楅潪甯告椿璺冨拰澶氭牱鍖栥€� - -杩囧幓涓€骞达紝Dubbo 绀惧尯椤圭洰鎬诲叡鍙戝竷 24 涓増鏈紝鍙戝睍 Committer/PMC 27 浜猴紝鍏朵腑鏈� 20% 鐨勮础鐚€呮槸鏉ヨ嚜浜庨樋閲屽反宸达紝80% 浠ヤ笂鏉ヨ嚜涓嶅悓缁勭粐鐨勫紑鍙戣€呮垨鐖卞ソ鑰呫€� - -Dubbo 绀惧尯缁勭粐浜嗚秴杩� 10 鍦虹嚎涓� meetup 娲诲姩锛屽熀鏈鐩栦簡鍥藉唴寮€鍙戣€呰仛闆嗙殑鍩庡競銆傞€氳繃绾夸笅鎴栫嚎涓婄洿鎾椿鍔紝鍒嗕韩瓒呰繃 100 涓� topic 鐨勬紨璁诧紝娣卞害璁茶В Dubbo 绀惧尯鏈€鏂板姩鎬併€佸姛鑳芥ā鍧楀紑鍙戝拰杩戞湡瑙勫垝绛夈€備富棰樻紨璁插ぇ澶氭槸绀惧尯閲囬泦鏂瑰紡锛岀敱 Dubbo 鐨勬繁搴︿紒涓氬垎浜疄璺电粡楠岋紝鍏朵腑鍏稿瀷鐨勪唬琛ㄥ寘鎷惡绋嬨€佸伐鍟嗛摱琛屻€佽€冩媺銆佷俊鐢ㄧ畻鍔涚瓑銆� - -浠� GitHub 缁熻鏁版嵁鏉ョ湅锛孌ubbo Star 鏁板彇寰楁柊鐨勯噷绋嬬锛屽凡瓒呰繃 3 涓囷紝鐩告瘮閲嶅惎寮€婧愭椂澧為暱浜嗚繎 5 鍊嶏紱璐$尞鑰呯敱鏈€鍒濈殑鍑犲崄涓闀垮埌鐜板湪鐨� 300 澶氫釜锛岃€岃繖鍏朵腑鏈� 60 澶氫汉宸茬粡琚彁鍚嶄负 committer锛屼笉璁烘槸璐$尞鑰呮暟閲忚繕鏄� committer 姣斾緥閮藉緱鍒板緢澶х殑鎻愬崌锛汥ubbo Java 鍙戝竷鐨勬湁 65 涓€� - -涓婅堪涓昏鏄 Dubbo Java 椤圭洰绀惧尯鍙戝睍鐨勬€荤粨锛屼笅闈㈠皢浠嬬粛 Dubbo Java 浜у搧鏂归潰鐨勮繘灞曘€� - -### Dubbo Java 杩唬锛岀洰鍓嶄富瑕佺淮鎶� 3 涓ぇ鐗堟湰 - -褰撳墠绀惧尯缁存姢鐨� Dubbo Java 澶х増鏈富瑕佹湁 3 涓紝鍒嗗埆鏄� 2.5.x銆�2.6.x 鍜� 2.7.x銆� - -2.7.x 鏄ぞ鍖虹殑涓昏寮€鍙戠増鏈紝鍦ㄨ繃鍘荤殑涓€骞村叡鍙戝竷浜� 8 涓増鏈紙2.7.0 - 2.7.7锛夛紝姣忎釜鐗堟湰閮芥湁涓€浜涘€煎緱鍏虫敞鐨勭壒鎬ф垨鍔熻兘鍗囩骇锛屾兜鐩栦粠缂栫▼妯″瀷銆佹湇鍔℃不鐞嗐€佹€ц兘鍒板崗璁殑澶氫釜鏂归潰鐨勫寮猴紱 - -2.6.x 鐗堟湰鍒欏畾浣嶄负 bugfix 鐗堟湰锛岃繃鍘讳竴骞村叡鍙戝竷浜� 3 涓増鏈紝涓昏浠ヤ慨澶嶉棶棰樺拰瀹夊叏婕忔礊涓轰富锛屽苟娌℃湁澧炲姞澶鏂扮殑 feature锛� - -2.5.x 鐗堟湰浠� 2019 骞村垵寮€濮嬪凡瀹e竷 EOF锛屽彧鍋氬畨鍏ㄤ慨澶嶏紱鑰屽埌浜嗕笅鍗婂勾宸茬粡瀹屽叏鍋滄浜嗙淮鎶ゃ€� - -涓嬮潰閫氳繃涓€涓畝瑕佸垎灞傛ā鍧楀浘锛屽洖椤捐繃鍘讳竴娈垫椂闂� Dubbo 鐨勬妧鏈灦鏋勬紨杩涳紝浠庣紪绋嬫ā鍨嬨€佹湇鍔℃不鐞嗐€佷紶杈撳崗璁€佹€ц兘浼樺寲绛夎搴﹀垏鍏ワ細 - - - -浠ヤ笂寰堝鍔熻兘閮藉凡琚悇澶у巶鍟嗚惤鍦帮紝鐢ㄤ簬瑙e喅鍏蜂綋鐨勪笟鍔¢棶棰樸€傛垜浠篃鏈熷緟锛屾帴涓嬫潵杩欎簺鍘傚晢甯︽潵鏇村鍏充簬 Dubbo 瀹炶返缁忛獙鐨勬繁搴︽€荤粨銆� - -## Dubbo-go 鍙戝睍鐨勭浜斿勾锛屾涓� Dubbo 榻愬ご骞惰繘 - -闄� Dubbo Java 涔嬪锛孌ubbo 鍛ㄨ竟涔熷彂灞曞嚭浜嗗緢澶氫紭绉€鐨勫瓙椤圭洰锛堝瓙绀惧尯锛夛紝鍏朵腑鍖呮嫭 Dubbo-spring-boot-project銆丏ubbo-go 绛夛紝杩欓噷鍏堢潃閲嶄粙缁� Dubbo-go 瀛愮ぞ鍖恒€� - -Dubbo-go 椤圭洰鏈€鏃╃敱浜庨洦鍦� 2016 骞� 5 鏈堟瀯寤猴紝鍚屽勾 9 鏈堝彂甯冨苟寮€婧愶紝濡備笅鏃堕棿杞村浘娓呮櫚璁板綍浜� Dubbo-go 鐨勫墠涓栦粖鐢熴€� - - - -绉夋壙 "bridge the gap between Java and Go" 澶╃劧浣垮懡鐨� Dubbo-go锛屽凡缁忚繘鍏ョ浜斾釜骞村ご锛屼篃璧板嚭浜嗚嚜宸辩嫭鐗圭殑鍙戝睍璺緞锛� - -- 褰撳墠鐨� v1.4.0 鐗堟湰宸插榻� 2.6.x 鐗堟湰锛屽嵆灏嗗彂甯冪殑鐗堟湰灏嗕笌 v2.7.x銆愬鏍� v2.7.5銆戝榻愶紝鑰屽悗灏嗕細鍙戝竷瀵规爣 Dubbo 3.x 鐨� v1.6.0 鐗堟湰锛� - -- 鐙珛缁存姢浠庡簳灞傜殑 hessian2 鍗忚搴� Dubbo-go-hessian2銆佺綉缁滃簱 getty 鍒颁笂灞傚鏍� Dubbo 鐨� Dubbo-go 鐨勫叏濂楀疄鐜帮紱 - -- 鐙珛鐨� TCP + Protobuf 鍜� gRPC + JSON 閫氫俊鏂规涔熷凡寮€鍙戝畬鎴愩€愬皢鍖呭惈鐫€鍦ㄧ増鏈� v1.5.0 涓€戯紱 - -- 宸蹭笌 Dubbo/gRPC/Spring Boot 瀹炵幇浜掕仈浜掗€氾紱 - -- 閫氳繃鎺ュ叆 Opentracing 鍜� Promethus锛孌ubbo-go 鍦ㄥ彲瑙傛祴鎬х瓑寰湇鍔℃柟鍚戠殑杩涜浜嗚嚜宸辩嫭鐗圭殑鎺㈢储锛� - -- 宸插疄鐜颁簡鍩轰簬 HTTPS 鐨勫彲淇� RPC 璋冪敤锛� - -- 宸茬粡瀹炵幇浜嗚嚜宸辩嫭鐗圭殑鎶� Kubernetes 浣滀负娉ㄥ唽涓績鐨勫井鏈嶅姟鏂规锛� - -Dubbo-go 浠庢渶寮€濮� Dubbo 鐨� Go 璇█瀹炵幇锛屽凡鍙戝睍鎴愪负鐩墠 Dubbo 澶氳瑷€鐗堟湰涓姛鑳芥渶寮哄ぇ鑰咃紝瀹冪殑鍙戝睍绂讳笉寮€鑳屽悗寮哄ぇ鐨� Dubbo-go 绀惧尯銆傞櫎浜嗕笂杩� Dubbo-go 鐨勮嚜韬壒鎬у锛岄€氳繃璺ㄧぞ鍖哄悎浣滐紝鍙栧緱浜嗗涓嬫垚缁╋細 - -- 閫氳繃涓� MOSN 绀惧尯鍚堜綔锛屽凡缁忓疄鐜� Dubbo/Dubbo-go 搴旂敤鍙互闆舵垚鏈帴鍏ュ熀浜� MOSN 瀹炵幇 Dubbo Mesh锛屽疄鐜板井鏈嶅姟鍜屼簯鍘熺敓鍏卞瓨鐨� 鈥滃弻妯″井鏈嶅姟鈥濓紱 - -- 涓� sentinel 绀惧尯鍚堜綔锛屽湪 Dubbo/Dubbo-go 瀹屾暣鎺ュ叆 sentinel 鐨勯檷绾у拰闄愭祦鏂规锛� - -- 涓� Apollo 绀惧尯鍚堜綔锛屽湪 Dubbo-go 涓疄鐜拌繙绋嬮厤缃笅鍙戯紱 - -- 涓� Nacos 绀惧尯鍚堜綔锛屽疄鐜板熀浜� Nacos 鐨勬湇鍔″彂鐜帮紱 - -### Dubbo-go 绀惧尯 2020 骞� Q2 涓昏鐩爣鏈夛細 - -鍙戝竷瀹屽叏瀵归綈 Dubbo 2.7.x 鐨� v1.5.0 鐗堟湰锛� - -鍙戝竷瀵规爣 Dubbo 3.0 鐨� v1.6.0 鐗堟湰锛� - -鍦ㄤ簯鍘熺敓鏂归潰缁х画鑷繁鐨勬帰绱紱 - -缁х画涓庡厔寮熺ぞ鍖轰繚鎸佸悎浣滃叡杩涙€佸娍锛屾墿澶ц嚜韬娇鐢ㄨ寖鍥达紱 - -鐢熶骇瀹炶返涓婃帹杩涘湪闃块噷闆嗗洟锛屼互鍙婃洿澶氬巶瀹剁殑钀藉湴銆� - -椤圭洰锛堝寘鎷瓙椤圭洰锛夌洰鍓嶅凡鍏堝悗鍦ㄦ惡绋嬨€佹秱楦︽櫤鑳藉拰铓傝殎閲戞湇绛夊叕鍙哥敓浜ц惤鍦般€� - -浠婂勾闃块噷闆嗗洟瀹屾垚 HSF 鍜� Dubbo 鐨勮瀺鍚堝悗锛岄」鐩篃灏嗗湪闃块噷闆嗗洟鍙屽崄涓€鎴樺満缁忓彈鑰冮獙銆� - -## 浜戝師鐢� Dubbo - Dubbo 3.0 - -3.0 鏄笅涓€浠� Dubbo 鏋舵瀯鐨勪唬鍙枫€備竴骞村墠锛屾渶寮€濮嬫帰绱� Reactive Stream 涔嬫椂锛岀ぞ鍖轰篃鏇炬湁杩囧 Dubbo 3.0 鐨勫箍娉涜璁恒€傝€岃繖涓€娆★紝鍦ㄤ簯鍘熺敓澶ц儗鏅笅锛�3.0 浠h〃浜嗘洿鍏ㄩ潰鐨� Dubbo 鏋舵瀯鍗囩骇锛屾秹鍙婂埌涓嬩竴浠� RPC 鍗忚銆佸叏鏂扮殑鏈嶅姟娌荤悊妯″瀷鍜屼簯鍘熺敓鍩虹璁炬柦閫傞厤绛夈€� - -闃块噷宸村反鏄弬涓� Dubbo 3.0 寮€鍙戝缓璁剧殑涓昏鍔涢噺涔嬩竴锛岃繖娆惧浜庨樋閲岀殑寮€婧愰」鐩閲嶆柊鍥炲綊闃块噷鍐呴儴钀藉湴銆� - -鍘诲勾寮€濮嬶紝闃块噷宸村反灏卞凡缁忓湪閫愭鎺ㄥ姩浠� Dubbo 鏇挎崲鍏跺唴閮ㄧ殑 HSF 妗嗘灦鐨勫伐浣滐紝閫氳繃灏� Dubbo 涓� HSF 涓や釜妗嗘灦铻嶄负涓€浣擄紝骞跺湪姝ゅ熀纭€涓婂彂灞曞嚭閫傚簲浜戝師鐢熸灦鏋勭殑 Dubbo 鐗堟湰銆侱ubbo 閲嶅洖闃块噷宸村反鐨勮惤鍦版槸鎷ユ姳绀惧尯銆佹嫢鎶变簯鍘熺敓銆佹嫢鎶辨爣鍑嗗寲鐨勪竴娆″緢濂界殑瀹炶返銆� - -闃块噷宸村反鍐呴儴 Dubbo 3.0 鐨勮惤鍦帮紝瀵圭ぞ鍖轰篃鏄竴涓噸澶у埄濂斤紝杩欎竴鏂归潰鏈夊埄浜庨樋閲屽反宸村皢鍏跺湪 HSF 涓婄殑涓板瘜鏈嶅姟娌荤悊缁忛獙鍥為杈撳嚭鍒扮ぞ鍖猴紝鍙︿竴鏂归潰涔熷皢鐩存帴鎺ㄥ姩 Dubbo 浜戝師鐢熸灦鏋勭殑蹇€熸紨杩涖€傞櫎浜嗛樋閲屽反宸翠箣澶栵紝鍖呮嫭鏂楅奔銆佸伐鍟嗛摱琛屻€佺埍濂囪壓銆佹枟楸肩瓑鍘傚晢涔熼兘鍦ㄥ弬涓庝笅涓€浠� Dubbo 3.0 鐨勫缓璁俱€� - -涓嬮潰鍒楀嚭浜� Dubbo 3.0 涓殑涓変釜閲嶈鏂瑰悜锛屽叿浣撶殑 Roadmap 灏嗗湪鎺ヤ笅鏉ユ枃绔犱腑鍗曠嫭璇存槑锛� - -- 涓嬩竴浠� RPC 鍗忚銆傛柊鍗忚灏嗘彁渚涙洿涓板瘜鐨勫 Stream銆丗low Control 绛夊唴缃涔夛紝鍚屾椂灏嗗叿鏈夋洿濂界殑鎵╁睍鎬с€佺綉鍏崇殑鍙嬪ソ鎬х瓑锛� - -- 鍩轰簬搴旂敤绮掑害鐨勬湇鍔″彂鐜版満鍒躲€傚湪鍏奸【 Dubbo 闈㈠悜鎺ュ彛鐨勬槗鐢ㄦ€т笌鍔熻兘鎬х殑鍩虹涓婏紝瑙e喅涓� Kubernetes Native Service 閫傞厤闂锛岃В鍐冲ぇ瑙勬ā闆嗙兢涓嬬殑鍦板潃鎺ㄩ€佹€ц兘鐡堕闂锛� - -- 閫傞厤浜戝師鐢熷熀纭€璁炬柦鐨勮В鍐虫柟妗堛€傝繖娑夊強鍒� Dubbo 鏈嶅姟涓庡熀纭€璁炬柦鐢熷懡鍛ㄦ湡瀵规帴銆並ubernetes Native Service 閫傞厤銆侀€傚簲鍩虹璁炬柦璋冨害鐨勬湇鍔℃不鐞嗚鍒欍€侀€傞厤 Service Mesh 鏋舵瀯鐨勮В鍐虫柟妗堢瓑锛� - -鎺ヤ笅鏉ユ部鐫€杩欎笁涓柟闈㈢畝瑕佸睍寮€銆� - -### 涓嬩竴浠� RPC 鍗忚 - -涓撴敞鍦ㄥ崗璁嚜韬潵璇达紝涓嬩竴浠g殑鍗忚涓昏鑱氱劍鍦� HTTP/2銆丷eactive Stream銆丗low Control 绛夋柟闈細 - -- **Reactive Stream**锛歊eactive Stream 寮曞叆 RPC锛屽甫鏉ユ洿涓板瘜鐨勯€氫俊璇箟鍜� API 缂栫▼妯″瀷鏀寔锛屽 Request-Stream銆丅i-Stream 绛夛紱 - -- **HTTP/2**锛氬井鏈嶅姟浜戝師鐢熷満鏅笅锛屽熀浜� HTTP/2 鏋勫缓鐨勯€氫俊鍗忚鍏锋湁鏇村ソ鐨勯€氱敤鎬у拰绌块€忔€э紱 - -- **Flow Control**锛氬崗璁唴缃祦鎺ф満鍒讹紝鏀寔绫讳技 Reqctive Stream 鐨� Request (n) 娴佹帶鏈哄埗銆� - -浠庤В鍐崇殑涓氬姟鍦烘櫙闂涓婃潵璇达紝鍩轰簬鏂扮殑鍗忚 Dubbo 鍦ㄦ鏋跺眰闈㈣鏀寔鏅鸿兘鍐崇瓥鐨勮礋杞藉潎琛$畻娉曘€佸 Mesh 鍜岀綉鍏虫洿鍙嬪ソ銆佹洿瀹规槗鎻愪緵澶氳瑷€瀹炵幇涓庝簰閫氱瓑銆� - -- **Mesh**锛氬崗璁绌块€� Mesh 鏇村弸濂斤紝鍖哄垎鍗忚澶� Metadata 涓� RPC Payload锛屾柟渚垮畬鎴愪笌 Mesh 鐨勫崗浣滐紝鍖呮嫭娴侀噺鎺у埗鏈哄埗銆佸簲鐢ㄥ眰閰嶇疆鍗忓晢绛夛紱 - -- **鍗忚閫氱敤鎬�**锛氬吋椤鹃€氱敤鎬т笌鎬ц兘锛屾敮鎸佸崗璁兘鍦ㄥ悇绉嶈澶囦笂杩愯锛� - -- **澶氳瑷€鏀寔**锛氬閫氳繃鏀寔 Protobuf 鎻愪緵浜嗘洿瀹屽杽鐨� 璺ㄨ瑷€鏈嶅姟瀹氫箟 涓� 搴忓垪鍖栦紶杈撶殑鏀寔銆� - -### 搴旂敤绾ф湇鍔℃不鐞� - -闈㈠悜鎺ュ彛涓€鐩翠互鏉ラ兘鏄� Dubbo 妗嗘灦鐨勪紭鍔裤€備竴鏂归潰瀹冪殑鏄撶敤鎬э紝涓哄紑鍙戣€呭睆钄戒簡杩滅▼璋冪敤鐨勫瓨鍦紱鍙︿竴鏂归潰闈㈠悜鎺ュ彛鐨勫湴鍧€鍙戠幇銆佹湇鍔℃不鐞嗗甫鏉ヤ簡鏇村己澶х殑鑳藉姏锛屼娇寰楁暣涓� Dubbo 娌荤悊浣撶郴闈炲父寮哄ぇ涓庣伒娲汇€� - -鏃㈢劧闈㈠悜鎺ュ彛鏈夊姝ゅ鐨勫ソ澶勶紝閭d负浠€涔堟垜浠繕瑕佹帰绱㈤潰鍚戝簲鐢ㄧ殑鏈嶅姟娌荤悊妯″紡鍛紵 - -鍚捣鏉ヤ技涔庢湁浜涚煕鐩俱€傚叾瀹炲埌搴曟槸闈㈠悜鎺ュ彛锛岃繕鏄潰鍚戝簲鐢紝鍙槸浠庝笉鍚岀殑瑙掑害鐪� Dubbo銆傛垜浠墍鑱婄殑鈥滈潰鍚戞帴鍙� -> 闈㈠悜搴旂敤鈥濈殑鏀归€狅紝涓昏浣撶幇鍦ㄦ湇鍔℃敞鍐屻€佸彂鐜板眰闈細 - - -鑰屾垜浠鐨勯潰鍚戝簲鐢ㄧ殑鏂版ā鍨嬶紝涓昏瀵圭 2 鐐癸紝鍗虫敞鍐屼腑蹇冪殑鏁版嵁缁勭粐杞彉涓� 鈥滈潰鍚戝簲鐢�/瀹炰緥鈥� 绮掑害銆傝繖涓烘垜浠В鍐充袱涓棶棰橈細 - -- 鍦ㄦ湇鍔″彂鐜板眰闈笌 Kubernetes Service 绛夊井鏈嶅姟妯″瀷瀵归綈锛� - -- 鏈嶅姟鍙戠幇鐨勬暟鎹噺灏嗘湁涓€涓噺绾х殑涓嬮檷锛屼粠 鈥滄帴鍙f暟 _ 瀹炰緥鏁� 鈥濅笅闄嶅埌 鈥滃簲鐢ㄦ暟 _ 瀹炰緥鏁扳€濄€� - -鍏蜂綋鍙互鍙傝鏂囩珷銆奃ubbo 杩堝嚭浜戝師鐢熼噸瑕佷竴姝� - 搴旂敤绾ф湇鍔″彂鐜拌В鏋愩€嬶紝鏈郴鍒楁枃绔犲悗缁篃浼氭湁瀵硅繖閮ㄥ垎鏈哄埗鍜屽疄鐜扮殑鏇存繁搴﹁В鏋愩€� - -浜戝師鐢熷熀纭€璁炬柦 -浜戝師鐢熷甫鏉ヤ簡搴曞眰鍩虹璁炬柦锛屽簲鐢ㄥ紑鍙戙€侀儴缃插拰杩愮淮绛夊叏鏂逛綅鐨勫彉鍖栵細 - -鍩虹璁炬柦 - -鍩虹璁炬柦璋冨害鏈哄埗鍙樺寲锛屽甫鏉ヨ繍缁达紙鐢熷懡鍛ㄦ湡锛夈€佹湇鍔℃不鐞嗙瓑鏂归潰鐨勫彉鍖栵紱 - -鏈嶅姟鍙戠幇鑳藉姏涓嬫矇锛� Kubernetes 鎶借薄浜� Native Service Discovery銆� - -Service Mesh - 浜戝師鐢熷井鏈嶅姟瑙e喅鏂规 - -- Mesh 涓鸿法璇█銆乻dk 鍗囩骇绛夋彁渚涗簡瑙e喅鏂规锛孌ubbo sdk 瑕佷笌 Mesh 鍗忎綔锛屽仛鍒板姛鑳姐€佸崗璁€佹湇鍔℃不鐞嗙瓑澶氭柟渚跨殑閫傞厤锛� - -- Mesh 灏氭湭澶ц妯¢摵寮€锛屼笖鍏舵洿閫傚悎瀵规祦閲忕鎺ф洿鍏虫敞鐨勫簲鐢紝浼犵粺 SDK 鐨勬€ц兘浼樺娍浠嶆棫瀛樺湪锛屼袱鑰呮贩閮ㄨ縼绉诲満鏅彲鑳戒細闀挎湡瀛樺湪銆� - -浠庡簲鐢ㄥ満鏅笂锛孌ubbo 鍙兘鐨勯儴缃茬幆澧冨寘鎷細 - -涓嶄娇鐢� Kubernetes Native Service锛孠ubernetes 鍙綔涓哄鍣ㄧ紪鎺掕皟搴﹁鏂斤紝缁х画浣跨敤 Dubbo 鑷缓鐨勬湇鍔℃敞鍐屻€佸彂鐜版満鍒讹紱 - -澶嶇敤 Kubernetes Native Service锛孌ubbo 涓嶅啀鍏冲績鏈嶅姟娉ㄥ唽锛孌ubbo Client 璐熻矗鏈嶅姟鍙戠幇涓庢祦閲忓垎閰嶏紱 - -Dubbo sdk 寰€ Mesh 杩佺Щ锛屼竴鏂归潰瑕佸仛鍒伴€傚簲 Mesh 鏋舵瀯锛屾垚涓� Mesh 浣撶郴涓嬬殑 RPC 缂栫▼鍜岄€氫俊鏂规锛涘彟涓€鏂归潰瑕佸仛鍒� Dubbo 涓� Mesh 鏋舵瀯闀挎湡鍏卞瓨锛屼簰鐩告墦閫氭湇鍔″彂鐜板拰娌荤悊浣撶郴锛� - -Kubernetes 涓婁笌浜戜笅娣峰悎閮ㄧ讲鐨勫钩婊戣縼绉绘敮鎸侊紝鍖呮嫭鏈嶅姟鍙戠幇鐨勭粺涓€涓庣綉缁滈€氫俊鏂规鐨勬墦閫氥€� - -浠� Dubbo 鍔熻兘鍒掑垎涓婏紝灏嗙潃閲嶄粠浠ヤ笅鏂归潰鎻愪緵瀵逛簯鍘熺敓鍩虹璁炬柦鐨勬敮鎸侊細 - -- **鐢熷懡鍛ㄦ湡**锛欴ubbo 涓� Kubernetes 璋冨害鏈哄埗缁戝畾锛屼繚鎸佹湇鍔$敓鍛藉懆鏈熶笌 Pod 瀹瑰櫒绛夌敓鍛藉懆鏈熺殑鑷姩瀵归綈锛� - -- **娌荤悊瑙勫垯**锛氭湇鍔℃不鐞嗚鍒欏湪瑙勫垯浣撱€佽鍒欐牸寮忔柟闈㈣繘琛屼紭鍖栵紝濡傝鍒欎綋浠� YAML 鎻忚堪銆佸彇娑堣繃婊よ鍒欏 IP 鐨勭洿鎺ヤ緷璧栵紝瀹氫箟瑙勫垯鐗规湁鐨� CRD 璧勬簮绛夛紱 - -- **鏈嶅姟鍙戠幇**锛氭敮鎸� K8S Native Service 鐨勬湇鍔″彂鐜帮紝鍖呮嫭 DNS銆丄PI-Server锛屾敮鎸� xDS 鐨勬湇鍔″彂鐜帮紱 - -- **Mesh 鏋舵瀯鍗忎綔**锛氭瀯寤轰笅涓€浠g殑鍩轰簬 HTTP/2 鐨勯€氫俊鍗忚锛屾敮鎸� xDS 鐨勬爣鍑嗗寲鐨勬暟鎹笅鍙戙€� - -鏂颁竴浠g殑 RPC 鍗忚鍜屽簲鐢ㄧ骇鏈嶅姟鍙戠幇妯″瀷灏嗕細鏄繖涓€閮ㄥ垎鐨勫墠缃熀纭€銆� - -## 鎬荤粨涓庡睍鏈� - -浣滀负绯诲垪鏂囩珷寮€绡囷紝鎴戜滑鍦ㄨ繖閲屽 Dubbo 杩囧幓涓€骞寸殑鎴愮哗鍋氫簡绠€瑕佺殑鎬荤粨涓庡洖椤撅紝鍖呮嫭 Dubbo 绀惧尯銆佷骇鍝佽凯浠g殑鍙戝睍銆傛帴涓嬫潵鎴戜滑浼氱湅鍒版洿澶氭潵鑷繁搴� Dubbo 鐢ㄦ埛鐨勮惤鍦扮粡楠屽垎浜紝Dubbo-go 瀛愮ぞ鍖虹殑鍙戝睍鏁呬簨绛夈€傛洿閲嶈鐨勶紝鎴戜滑涔熷涓嬩竴浠d簯鍘熺敓 Dubbo - Dubbo 3.0 鍋氫簡灞曟湜锛屽悗缁叧浜� Dubbo 3.0 Roadmap銆佹柟妗堣璁′笌杩涘睍瑙f瀽绛変篃灏嗗湪姝ょ郴鍒椾腑鍙戝竷銆� - -鍦ㄣ€愰樋閲屽反宸翠簯鍘熺敓鍏紬鍙枫€戠暀瑷€璇村嚭涓� Apache Dubbo 鐨勬晠浜嬶紝鐐硅禐鎺掑悕鍓嶅崄鐨勫悓瀛﹀彲棰嗗彇 Dubbo 閫佸嚭鐨勪笓灞炲鍝佹澂瀛愪竴鍙紱鍙﹀鐢� Apache Dubbo PMC @Chickenlj 闅忔満鎶藉彇涓€鍚嶅垢杩愯鑰咃紝璧犻€佷环鍊� 260 鍏冩姢鐪肩伅涓€鍙般€備笅鍛ㄤ笁寮€濂栥€� diff --git a/doc/md/course/the-5th-years-of-dubbo-go.md b/doc/md/course/the-5th-years-of-dubbo-go.md deleted file mode 100644 index 288c8ab0fba01f2101b737dd8841680367512d6f..0000000000000000000000000000000000000000 --- a/doc/md/course/the-5th-years-of-dubbo-go.md +++ /dev/null @@ -1,165 +0,0 @@ -# [鍐欏湪 Dubbo go 鐨勭浜斿勾](https://my.oschina.net/u/3874284/blog/4577120) - -09/16 14:33 - - - -浣滆€� |聽浜庨洦 - -**闃块噷宸村反浜戝師鐢熷叕浼楀彿鍚庡彴鍥炲鈥�915鈥濆嵆鍙煡鐪� dubbogo聽v1.5.1聽椤圭洰绠$悊鍥炬竻鏅板ぇ鍥撅紒** - -# 寮曡 - -dubbogo 椤圭洰宸茶繘鍏ョ浜斾釜骞村ご銆� - -椤圭洰鍙戝睍鐨勫墠涓ゅ勾锛屾垜浠妸 hessian2 鍗忚搴撱€佺綉缁滃簱鍜屾暣浣撳熀纭€妗嗘灦鎼缓涓€鐣€備粠 2018 骞撮」鐩 Dubbo 瀹樻柟鎺ョ撼寮€濮嬶紝渚濇墭闃块噷骞冲彴锛岀ぞ鍖哄紑濮嬪舰鎴愬苟蹇€熷彂灞曘€備笌绀惧尯鍚屽浠綈蹇冨悎鍔涗箣涓嬶紝濡備粖鍏ㄩ潰鍏煎 Dubbo v2.7.x 鐨� Dubbo-go v1.5.1 宸茬粡鍙戝竷銆� - -# 绔嬮」 - -涓€涓」鐩暣浣撳繀椤绘彁鐐煎嚭鏍稿績鐩爣锛屾寚鏄庡叾瀛樺湪鐨勬剰涔夊拰浠峰€笺€傛湁浜嗗垵蹇冿紝椤圭洰鍙戝睍杩囩▼涓骇鐢熷洶鎯戞椂锛屾墠鑳芥槑纭瓟澶� 鈥滄垜鏄皝锛熶粠鍝噷鏉ワ紵鍒板摢閲屽幓鈥濄€� - -## 1\. dubbogo - -dubbogo 椤圭洰鏈夊叾鑷韩鐨� milestone 瑕佹眰锛屽ぇ鑷磋鍒掍簡姣忎釜闃舵鐨勫叧閿噷绋嬬锛屽湪椤圭洰鍙戝睍鍒濇湡浠呬粎鏄疄鐜� Dubbo 鐨勬煇涓姛鑳斤紝浣嗗湪鍙戝睍杩囩▼涓細涓嶆柇缁撳悎褰撲笅鐨勬妧鏈彂灞曟疆娴侊紝涓嶆柇淇鍏舵湭鏉ュ彂灞曟柟鍚戙€� - -鍏跺彂鐗堣鍒掓槸閫氳繃鈥滃紑鍙戝綋鍓嶇増鏈€佽鍒掓柊鐗堟湰銆佹牴鎹弽棣堜慨姝f柊鐗堟湰鈥濈殑妯″紡瀹氫箟褰撳墠鐗堟湰鐨勫紑鍙戝唴瀹瑰拰涓嬩竴涓増鏈殑鍙戝睍鏂瑰悜銆傛瘡娆″彂鐗堝悗浼氭牴鎹ぞ鍖轰娇鐢ㄥ弽棣堝涓嬩竴浠g殑鍙戝睍鐩爣杩涜淇銆� - -绔欏湪鍚冪摐浜虹殑瑙掑害锛屾垨璁稿彲浠ヨ鍑� 鈥渄ubbogo 涓嶅氨鏄� dubbo 鐨� Go 璇█鐗堟湰鍢涳紝鐓х潃鎶勫氨鏄簡鈥� 涔嬬被鐨勮璋冦€傝€屽弬涓庤繃 dubbogo 椤圭洰璺熺潃绀惧尯涓€璺蛋鏉ョ殑浜猴紝灏辩煡閬� dubbogo 骞朵笉绠€鍗曞畾浣嶄簬 Dubbo 椤圭洰鐨� Go 璇█鐗堟湰銆� - -dubbogo 鍒濆績涓嶅彉锛屼笉鍚屾椂闂村鑷韩瀹氫綅鍧囨湁鍗囩骇銆傛垜璁や负褰撳墠 dubbogo 鐨勫畾浣嶆槸锛� - -* 鍏ㄩ潰鍏煎 Dubbo锛� -* 涓€涓� Go 璇█搴旂敤閫氫俊妗嗘灦锛屽厖鍒嗗埄鐢ㄤ綔涓轰簯鍘熺敓鏃朵唬绗竴璇█---Go 璇█鐨勪紭鍔匡紝鎵╁睍 dubbo 鐨勮兘鍔涖€� - -## 2\. dubbo-go-proxy - -dubbogo 椤圭洰鍒濇湡鐩殑鏄緷闈� Dubbo 瀹炵幇 "bridge the gap between Java and Go" 锛岀洰鍓� dubbogo 姝d笌 Dubbo 榻愬ご骞惰繘锛屽凡缁忚揪鍒伴」鐩珛椤圭殑鐩爣銆傛湁闀挎湡鐢熷懡鐨勯€氫俊妗嗘灦锛屽ぇ姒傛湁 5 骞寸殑鎴愰暱鏈熷拰 5 骞寸殑绋冲畾鎴愮啛鏈熴€傜洰鍓嶇殑 dubbogo 澶勫湪鎴愰暱鏈熷拰绋冲畾鎴愮啛鏈熺殑杩囨浮鏈燂紝杩欐剰鍛崇潃绀惧尯濡傛灉鎯充繚鎸佸彂灞曟€佸娍锛屽氨蹇呴』寮€濮嬭蛋澶氬厓鍖栭亾璺紝鍙戝睍鑷繁鐨勭敓鎬佷簡銆� - -鐪间笅 dubbogo 绀惧尯姝e湪闆嗕腑绮惧姏瀛靛寲涓€涓柊鐨勯」鐩�---瀹炵幇涓€涓熀浜� dubbogo 鐨� [HTTP 缃戝叧](https://github.com/dubbogo/dubbo-go-proxy)锛岄」鐩殑鎰忎箟鏄細dubbogo 鑷韩鏄竴涓祦閲忔帶鍒朵腑闂翠欢锛屽湪鍏朵笂鎵╁睍椤圭洰锛屽叾鏂瑰悜寰堣嚜鐒跺氨鏄仛涓€涓� proxy/sidecar or gateway锛屼笖绀惧尯涓€鐩存湁缃戝叧杩欐柟闈㈢殑闇€姹傘€� - -椤圭洰鐩殑濡備笅锛� - -* 鍋氫竴涓叿鏈夌敓浜т娇鐢ㄦ剰涔夌殑缃戝叧锛� -* dubbo-go-proxy 楠岃瘉 dubbogo 鐨勮兘鍔涳紝瀵� dubbogo 鏈潵鐨勮繘鍖栨寚鍑烘柊鏂瑰悜锛屽叡鍚岃繘鍖栵紱 -* 浼樺寲 dubbogo 鐨勭ǔ瀹氭€у拰鎬ц兘銆� - -# 鍥㈤槦 - -椤圭洰绔嬮」瀹屾瘯鍚庯紝灏辫繘鍏ユ嫑鍏典拱椹樁娈典簡銆� - -## 1\. 鏉ユ簮 - -dubbogo 绀惧尯鍙戝睍鍒濇湡锛屽叾鍏抽敭鎴愬憳閮芥槸閫氳繃鎻愪氦 issue 鎴栬€� pr 鐨勫悓瀛︽挬鏉ョ殑銆傞€氳繃杩欑鏂瑰紡鎾╂潵鐨勫悓瀛﹀洜涓哄織鍚岄亾鍚堬紝鏈夋瀬楂樼殑姒傜巼鍚岀ぞ鍖轰竴璧疯蛋涓嬫潵銆俤ubbogo 绀惧尯鐨� core member 灏辨槸杩欐牱鏉ョ殑銆� - -鍏舵鏄笌鍏朵粬鍏徃鐨勫悎浣溿€俤ubbogo 鏈韩鏄竴涓湁鐫€鏋侀珮鐢熶骇鐜闇€姹傜殑椤圭洰锛屽湪鍙戝睍杩囩▼涓緷娆′笌鎼虹▼銆佹秱楦︺€佹枟楸笺€佽檸鐗欍€佽殏铓侀噾鏈嶅拰闃块噷闆嗗洟鏈夎繃鏋佹繁鐨勫悎浣滐紝鍏堕棿涓庢惡绋嬬殑鍚堜綔瀵� dubbogo 鎴愬瀷鑰岃█鏋佷负鍏抽敭銆� - -鍙︿竴涓€斿緞鏄笌鍏朵粬绀惧尯鍚堜綔銆俤ubbogo 椤圭洰鍙戝睍杩囩▼涓紝涓庝互涓嬬ぞ鍖哄悎浣滆繃锛� - -* 涓� MOSN 绀惧尯鍚堜綔瀹炵幇 Dubbo Mesh锛� -* 涓� sentinel 绀惧尯鍚堜綔锛屽湪 Dubbo/Dubbo-go 瀹屾暣鎺ュ叆 sentinel 鐨勯檷绾у拰闄愭祦鏂规锛� -* 涓� Apollo 绀惧尯鍚堜綔锛屽湪 Dubbo-go 涓疄鐜拌繙绋嬮厤缃笅鍙戯紱 -* 涓� Nacos 绀惧尯鍚堜綔锛屽疄鐜板熀浜� Nacos 鐨勬湇鍔″彂鐜般€� - -涓庡叾浠栫ぞ鍖哄悎浣滅殑濂藉鏄娇寰楀弻鏂圭殑椤圭洰閮藉彈鐩婏細鎵╁睍鍙屾柟鐨勮兘鍔涘拰浣跨敤鍦烘櫙锛屽叾娆℃槸绀惧尯闂翠汉鍛樼殑娴佸姩銆傚湪鍚堜綔杩囩▼涓紝dubbogo 鑷韩鍙楃泭鏋佸ぇ锛岀洰鍓嶆湁 4 涓ぞ鍖� committer 鏉ヨ嚜浜庡叾瀹冪ぞ鍖恒€傚悎浣滃畬鎴愬悗骞朵笉鎰忓懗鐫€缁撴潫锛岃€屾槸涓€涓柊鐨勫弻璧㈢殑寮€濮嬶細绀惧尯椤圭洰涔熸槸鍙戝睍鐨勶紝褰撲竴涓」鐩湁鏂扮壒鎬ф椂鍙互鍚屾椂蹇€熻鍙︿竴涓」鐩噰鐢ㄩ獙璇侊紝瀵规墿灞曞紑鍙戣€呬滑鐨勬妧鏈兘鍔涘拰浜鸿剦涔熸槸鏋佷负鏈夊埄鐨勶紝dubbogo 绀惧尯鐩墠鐨勫ソ鍑犱釜鍚屽鍚屾椂娲昏穬鍦ㄥ涓ぞ鍖恒€� - -dubbogo 椤圭洰宸茬粡杩囦簡鑽夎幗闃舵锛屽舰鎴愪簡涓€涓殑 800 澶氫汉鐨勭ぞ鍖虹兢锛屾墍浠� dubbogo-proxy 椤圭洰绔嬮」鍚庯紝寰堝揩灏卞湪绀惧尯缇ゅ唴鎵惧埌寰堝椤圭洰鐖卞ソ鑰呫€� - -## 2\. 鎴愬憳鐨� qualification - -椤圭洰鍙戝睍鍒濇湡鏈夊緢澶氬悓瀛︿細 Java 涓嶆噦 Dubbo 涓嶄細 Go锛屾渶鍚庨兘閫氳繃鍙備笌椤圭洰鎻愬崌浜嗚嚜鎴戠殑鑳藉姏銆傚綋鐒舵湁浜涗汉浼氭媴蹇冮」鐩唬鐮佺殑璐ㄩ噺锛屼絾鍙绉夋寔 "Community Over Code" 杩欎釜 "Apache Way"锛屽湪鍙戝睍杩囩▼涓繖浜涢棶棰橀兘涓嶅ぇ銆� - -2019 骞存椂锛屽弬涓� dubbogo 椤圭洰鐨勬垚鍛樹腑涓€閮ㄥ垎鍚屽骞虫椂鐨勫伐浣滄槸杩涜涓氬姟寮€鍙戯紝绉夋壙鐫€瀵逛腑闂翠欢閫氫俊鎶€鏈� 鈥滄垜鏄皝锛熸垜浠庡摢閲屾潵锛熻鍒伴偅閲屽幓鈥� 鐨勫垵蹇冨弬涓� dubbogo 鐨勫紑鍙戯紝鏃犺鏄 dubbogo 鎶戞垨鏄鍏惰嚜韬妧鏈按骞虫彁鍗囬兘浜х敓浜嗙Н鏋佺殑褰卞搷銆� - -dubbogo 绀惧尯瀵� dubbogo 鍙戠増鏃堕棿鏈変竴瀹氭湡闄愯姹傦紝鎵€浠ュ鍙備笌浜哄憳鐨勬椂闂存姇鍏ヤ篃鏈変竴瀹氱殑瑕佹眰銆傛瘡涓増鏈殑鏍稿績鍔熻兘鐨� owner锛岄渶瑕佷繚璇佸湪 deadline 鏈熼檺鍐呭畬鎴愬紑鍙戜换鍔°€� - -dubbogo 姣忎釜鐗堟湰閮芥湁涓€涓彂鐗堜汉锛岃礋璐g浉搴旂増鏈殑浠诲姟鎷嗗垎銆佸彂灞曡窡韪€佷唬鐮� Review 鍜屾渶鍚庣殑娴嬭瘯楠屾敹锛岃繖灏辫姹傚彂鐗堜汉鑷韩鐨勬妧鏈按骞冲拰鏃堕棿鎶曞叆鏋侀珮銆傜洰鍓� dubbogo 姣忎釜澶х増鏈殑鍙戠増浜洪兘涓嶆槸鍚屼竴涓汉锛屾瘡娆� dubbogo 鍙戠増锛岄兘鎰忓懗鐫€姣忎釜鍙戠増浜虹殑浣撳姏鍜岀簿鍔涚殑鏋佸ぇ浠樺嚭銆備簬鏌愬湪姝よ嚧鏁巻灞婂彂鐗堜汉锛� - -# 绠$悊 - -椤圭洰绔嬮」鍚庯紝灏遍渶瑕佹槑纭彂灞曞ぇ鏂瑰悜銆佸彂灞� milestone銆佺増鏈鍒掋€佷互鍙婁竴娈垫椂闂村唴鐨勫叿浣撶殑寮€鍙戣鍒掋€傞」鐩彂灞曞垵鏈燂紝Roadmap 鍙互涓嶆竻鏅帮紝鍏堟懜鐫€鐭冲ご杩囨渤锛屽湪鍙戝睍杩囩▼涓€愭鏄庣‘鍏跺唴瀹广€� - -## 1\. 闇€姹傛敹闆� - -dubbogo 椤圭洰鍙戝睍鍒濇湡锛屽叾鐩爣浠呬粎鏄疄鐜� dubbo 鏌愪釜鐗堟湰鐨勫姛鑳斤紝 鎵€浠ュ叾闇€姹傛敹闆嗗苟涓嶇敤鑺辫垂寰堜箙鏃堕棿銆傞殢鐫€ 2019 骞� 8 鏈堜唤鍙戝竷 v1.0 鍚庯紝dubbogo 瓒婃潵瓒婂鍦拌澶氬鐢熶骇鍘傚晢鎶曞叆鐢熶骇浣跨敤鐜涓紝鐩墠鍏堕渶姹傛柟鏉ユ簮濡備笅锛� - -* 瀹炵幇 dubbo 鏌愪釜鐗堟湰鐨勫姛鑳斤紱 -* 瀹為檯浣跨敤鏂圭殑鐢熶骇闇€姹傦紱 -* 涓虹揣璺熷綋涓嬫渶杩戞妧鏈彂灞曟柟鍚戣€岃繘琛岀殑鎶€鏈婕斻€� - -dubbogo 褰撳墠鐨� K8s 娉ㄥ唽涓績鎶€鏈柟妗堝氨鏄揣璺熸渶鏂版妧鏈彂灞曟柟鍚戣€岃繘琛岄婕旂殑鏋佸ソ渚嬭瘉锛屽叾鍙戝睍鏃堕棿绾垮涓嬶細 - -* 2019 骞� 7 鏈堬紝闅忕潃闃块噷闆嗗洟鍜岃殏铓侀噾鏈嶅湪浜戝師鐢熸柟鍚戠殑鎺ㄦ尝鍔╂緶锛岄樋閲� dubbo 寮€鍙戝洟闃熷苟鏈粰鍑哄彲闈犵殑鎶€鏈柟鍚戯紝dubbogo 绀惧尯 core members 涔熼兘娌℃湁浜戝師鐢熸柟鍚戠殑鎶€鏈Н绱拰鐩稿簲浜烘墠锛屽喅瀹氬厛寮€鍙戜竴涓熀浜� kube-apiserver 鐨勬敞鍐屼腑蹇冿紝浠ヨ繘琛屾妧鏈偍澶囷紱 - -* 2019 骞� 8 鏈堬紝 璋冪爺 dubbo 鐨� K8s 娉ㄥ唽涓績鏂规鍚庯紝dubbogo 绀惧尯鍐冲畾鎶涘紑瀹冪嫭绔嬪疄鐜颁竴涓紝浜夊彇浠ユ渶浣庝唬浠锋妸 dubbo 搴旂敤杩佺Щ鍒� K8s 鐜涓繍琛岃捣鏉ワ紝鍚屾椂鍐冲畾鏈潵鐨勫彂灞曟柟鍚戞槸 dubbogo operator锛� - -* 2019 骞� 11 鏈堬紝绀惧尯鐨勭帇缈斿悓瀛︾粰鍑轰簡鍒濇瀹炵幇锛屽湪 2020 骞� 1 鏈堥殢 dubbogo v1.2 鐗堟湰鍙戝竷锛� - -* 2020 骞� 4 鏈堬紝鏈夌敤鎴疯姹傚湪 K8s 鐜涓� consumer 鍙法 namespace 璁块棶 provider锛岀浉搴斿疄鐜板湪 2020 骞� 7 鏈堥殢鐫€ dubbogo v1.5 鐗堟湰鍙戝竷锛� - -* 2020 骞� 5 鏈堬紝dubbogo 绀惧尯鍜� mosn 绀惧尯鍚堜綔瀹炵幇浜� dubbo mesh锛� - -* 2020 骞� 6 鏈堬紝绀惧尯鎰忚瘑鍒� kube-apiserver 鏄郴缁熺殑杩愮淮鎬� IaaS 灞傜殑鏍稿績缁勪欢锛屼笉搴旇璺ㄨ繃 PaaS 灞傜洿鎺ユ毚闇茬粰搴旂敤灞傦紝鍚﹀垯搴旂敤灞備娇鐢ㄤ笉褰撴垨鑰呮鏋惰嚜韬殑娴侀噺鏂归潰鐨� bug 鎶� kube-apiserver 鎵撳灝鍚庡皢閫犳垚鏁翠釜绯荤粺鐨� P0 绾ф晠闅滐紝dubbogo v1.6 搴斿綋缁欏嚭 dubbogo operator 鐨勫叿浣撳疄鐜帮紱 - -* 2020 骞� 7 鏈堬紝dubbogo v1.5 鍙戝竷鍚庯紝绀惧尯宸茬粡鐭ラ亾瀹屽叏鍙互鎶婄洰鍓嶇殑 kube-apiserver 娉ㄥ唽涓績鐨勫疄鐜扮嫭绔嬫垚涓轰竴涓� dubbogo operator锛屾湭鏉ョ殑鏂瑰悜鏄粨鍚� Istio 鎷撳睍鍏剁伆搴﹀彂甯冦€侀檺娴併€佹晠闅滄敞鍏ュ拰閰嶇疆鍔ㄦ€佷笅鍙戣兘鍔涖€� - - -鑷充簬 dubbo-go-proxy 锛宒ubbogo 绀惧尯骞朵笉鎵撶畻鍊熼壌鍏朵粬椤圭洰锛屽畬鍏ㄤ緷闈犵ぞ鍖哄悓瀛﹁础鐚悇鑷兂娉曞悗锛岃繘琛岄」鐩渶姹傛敹闆嗐€傜洰鍓� dubbogo 绀惧尯宸茬粡鏀堕泦瀹屾瘯 dubbo-go-proxy 鐨刐椤圭洰闇€姹傛柟鐨勬剰瑙乚(https://github.com/apache/dubbo-go/issues/540)锛岀ぞ鍖哄凡鏈� 5 浣嶅悓瀛﹀弬涓庨」鐩竴鏈熷紑鍙戯紝棰勮 10 鏈堜唤鍙戝竷鍒濈増銆� - -## 2\. 椤圭洰绠$悊 - -闇€姹傛敹闆嗗畬姣曪紝瀹氫箟杩戞湡涓€娈垫椂闂村唴鐨勫紑鍙戠洰鏍囧悗锛屽氨杩涘叆浜嗛」鐩换鍔℃媶瑙e拰椤圭洰寮€鍙戠鐞嗛樁娈点€傚儚 dubbogo 鍜� dubbo-go-proxy 杩欑鍚庢潵鑰呴」鐩紝澶勪簬杩借刀闃舵锛屼釜浜虹悊瑙e畠浠苟娌℃湁鎵€璋撶殑鍚庡彂浼樺娍锛屾洿娌℃湁鐗瑰畾鐨勬妧鏈紭鍔匡紝鑳藉鍋氱殑灏辨槸蹇€熻凯浠o紝缂╃煭涓庣珵鍝佺殑宸窛銆� - -dubbogo 瑕佹眰鎺ュ彈寮€鍙戜换鍔$殑鍚勪釜 feature owner 蹇呴』鍦ㄦ煇涓� deadline 鍓嶅畬鎴愮浉搴旂殑寮€鍙戜换鍔°€傚綋鐒讹紝feature 鐨勭瓑绾т笉鍚岋紝闈炴牳蹇� feature 銆愬鎶€鏈婕旀€х殑 feature銆戝厑璁� delay锛岄『寤跺彂甯冧篃鏃犱笉鍙€� - -鎴戜滑鍦ㄩ」鐩瘡涓増鏈殑闇€姹傛敹闆嗛樁娈碉紝浼氭妸鐖卞ソ鑰呯粺涓€鎷夊叆涓€涓皬缇よ繘琛屾矡閫氫氦娴併€傝繘鍏ュ紑鍙戦樁娈垫椂锛岀敱浜庨」鐩椂闂� deadline 闄愬畾浠ュ強鎶€鏈尮閰嶅害涓ら」瑕佹眰锛屾瘡涓増鏈氨寰堣嚜鐒惰兘閫夊嚭鑳藉鐣欎笅鏉ュ弬涓庨」鐩紑鍙戠殑浜恒€傛渶缁堝弬涓庢瘡涓増鏈紑鍙戠殑浜哄敖閲忎笉瑕佽秴杩� 7 涓汉锛屽惁鍒欐矡閫氭垚鏈氨浼氬墽澧炪€� - -涓嬪浘鏄� dubbogo v1.5.1 鐨勯」鐩鐞嗗浘\*\*锛堥樋閲屽反宸翠簯鍘熺敓鍏紬鍙峰悗鍙板洖澶嶁€�915鈥濆嵆鍙煡鐪嬫竻鏅板ぇ鍥撅級\*\*锛� - - - -鍏舵湁浠诲姟鍒嗚В銆佹妧鏈闄╀互鍙婇闄╅妗堛€� - - - -宸ュ叿鏄敓浜у姏锛岀洰鍓嶄互 dubbogo 椤圭洰寮€鍙戣繘搴﹁窡韪伐鍏蜂娇鐢� Github Projects銆傚涓婂浘锛屾瘡涓瓙浠诲姟杩涘害锛岃繖涓伐鍏烽兘浼氬強鏃舵樉绀猴紝鐩稿簲鐨勪换鍔� owner 鍙互鍙婃椂鏍规嵁浠诲姟杩涘害鍜� deadline 锛岃皟鏁村紑鍙戣鍒掋€傛洿杩涗竴姝ョ殑濂藉鏄紝娌℃湁浜轰細瀵瑰伐鍏蜂骇鐢熸剰瑙侊紝鎽嗚劚鈥滀氦閫氬熀鏈潬璧帮紝閫氳鍩烘湰闈犲惣鈥濈殑娌熼€氭ā寮忥紝鍑忓皯鐗堟湰鍙戠増浜哄拰 feature owner 涔嬮棿鐨勬埦姘斻€� - -## 3\. 浠g爜璐ㄩ噺 - -寮€婧愰」鐩殑寮€鍙戜换鍔′笉浠呬粎鏄紑鍙戜唬鐮侊紝涔熶笉鎰忓懗鐫€鍥犱负鍚勪釜 owner 浠呬粎鏄笟浣欐椂闂村弬涓庡紑婧愰」鐩氨鍙互闄嶄綆瀵逛唬鐮佽川閲忚姹傘€� - -宸ュ叿灏辨槸鐢熶骇鍔涳紝鍚堥€傜殑宸ュ叿鑳藉鍑忓皯浜哄伐宸ヤ綔閲忓拰鎻愬崌浠g爜璐ㄩ噺銆俤ubbogo 鍦ㄩ」鐩紑鍙戣繃绋嬩腑鐨勫悇涓樁娈甸兘鐢ㄥ埌浜嗗涓嬪伐鍏凤細 - -* auto-comment锛歝ontributor 鎻愬嚭 issue 鎴栬€� pr 鍚庯紝鍙緢鏂逛究鍦板彂鍑洪鍏堝畾鍒剁殑璇勮锛� - -* hound锛氫竴涓� Go 璇█椤圭洰闈欐€佷唬鐮佹娴嬪伐鍏凤紝鑷姩 Review 浠g爜锛� - -* travis锛氫竴涓� Github 椤圭洰鑷姩鍖栨祴璇曞伐鍏凤紝鍙嚜鍔ㄦ墽琛屼唬鐮佸崟娴嬪拰鐢ㄦ埛鑷畾涔夌殑闆嗘垚娴嬭瘯锛屽苟鍙戝嚭閽夐拤閫氱煡锛� - -* 浜哄伐 Review锛歞ubbogo 绀惧尯瑕佹眰姣忎釜 pr 鑷冲皯鏈変笁涓� committer 绾у埆鐨勪汉 Review 閫氳繃锛� - -* goreportcard锛氫竴涓緢濂界殑 Github 椤圭洰闈欐€佷唬鐮佹娴嬪伐鍏凤紱 - -* gitee锛氫綔涓哄浗鍐呬竴涓瘮杈冨己澶х殑浠g爜鎵樼缃戠珯锛屽厤璐逛负椤圭洰鎻愪緵浜嗕竴浜涗唬鐮佸畨鍏ㄥ拰闈欐€佷唬鐮佽川閲忔娴嬪伐鍏凤紝dubbogo 涔熺粡甯镐娇鐢紝鍙楃泭鑹锛� - -* 浠g爜瑙勮寖锛岀ぞ鍖哄唴閮ㄦ湁涓€浠界畝鍗曠殑浠g爜瑙勮寖锛屽苟闅忕潃椤圭洰鍙戝睍涓嶆柇瀹屽杽銆� - - -# 灞曟湜 - -<br />dubbogo 椤圭洰姣忔鍙戝畬鐗堟湰锛屽彂鐗堜汉閮戒細棣栧厛鍙戝嚭涓€浠� "What's New"锛岄櫎浜嗘€荤粨鏈€鏂扮増鏈殑鐗规€у锛岃繕浼氭€荤粨鍏惰繎鏈熻繘灞曞苟瀵规湭鏉ュ彂灞曡繘琛岃鍒掞紝浠ュ府鍔╅」鐩埍濂借€呭拰浣跨敤鑰呬簡瑙e叾瀹炵幇鎬濊矾鍜屼娇鐢ㄦ柟娉曘€� - -dubbogo 鑷韩杩樻湁寰堝缂虹偣锛屽锛� - -* 缃戠珯寤鸿鍜屾枃妗h川閲忛兘鏈夊緟鏀硅繘锛� -* API 鐢ㄦ埛鍙嬪ソ搴︿笉澶燂紱 -* 閰嶇疆鏂囦欢杩囧涓旀病鏈夊悎鐞嗙殑鏂囨。璇存槑瀵艰嚧鍏ラ棬闂ㄦ楂橈紱 -* 鏁翠綋鎬ц兘鏀硅繘锛屽緢澶氬湴鏂瑰彲娣诲姞璋冪敤閾剧殑缂撳瓨浠ュ噺灏忛攣绔炰簤锛� -* 娣诲姞 prometheus 鎸囨爣锛岀户缁彁楂� 鍙娴嬫€э紱 -* 鍦ㄥ崗璁眰闈㈡敮鎸佸叾浠栧井鏈嶅姟妗嗘灦锛屽疄鐜板師鐢熼€氫俊锛屼互缁х画鎻愬崌鍏朵簰鑱斾簰閫氭€э紱 -* dubbo-samples 鐢ㄤ緥涓嶅涓板瘜锛岀户缁坊鍔犳祴璇曠敤渚嬶紝浠ュ噺灏忓叆闂ㄩ棬妲涳紱 - -甯屾湜鍊熷姪绀惧尯涔嬪姏锛屽湪 dubbogo 鍙戝睍杩囩▼涓秷鍖栧苟瑙e喅鎺夎繖浜涢棶棰橈紝dubbogo 绀惧尯銆愰拤閽夌兢鍙� 23331795銆戜笌 dubbogo 鍚屽湪銆� - -### 浣滆€呯畝浠� - -浜庨洦锛屼竴涓湁鍗佸骞存湇鍔$鍩虹鏋舵瀯鐮斿彂涓€绾垮伐浣滅粡楠岀殑绋嬪簭鍛橈紝鐩墠鍦ㄨ殏铓侀噾鏈嶅彲淇″師鐢熼儴浠庝簨瀹瑰櫒缂栨帓鍜� service mesh 宸ヤ綔銆傜儹鐖卞紑婧愶紝浠� 2015 骞寸粰 Redis 璐$尞浠g爜寮€濮嬶紝闄嗙画鏀硅繘杩� Muduo/Pika/Dubbo/Dubbo-go 绛夌煡鍚嶉」鐩€� \ No newline at end of file diff --git a/doc/md/course/the-growth-of-dubbo-go.md b/doc/md/course/the-growth-of-dubbo-go.md deleted file mode 100644 index 4ecf021656998780ac167b5b115bf5f4b702c11f..0000000000000000000000000000000000000000 --- a/doc/md/course/the-growth-of-dubbo-go.md +++ /dev/null @@ -1,5 +0,0 @@ -# [閭规瘏璐わ細Dubbo-go 鐨勬垚闀夸笌铚曞彉涔嬭矾](https://m.bilibili.com/video/BV1BV411677w) - -Dubbo-go 铏界劧鏈夌潃 鈥渂ridge the gap between Java and Go鈥� 鐨勫ぉ鐒朵娇鍛斤紝浣嗕竴璺蛋鏉ワ紝宸蹭笉浠呬粎鏄� Dubbo 鐨勪竴涓� Go 璇█瀹炵幇銆傞€氳繃鎻愪緵鍙娴嬨€佸彲淇℃€ф湇鍔′繚闅滐紝蹇€熺粨鍚� Dubbo 鏈嶅姟杩涜浜掕仈浜掗€氾紝涓旀湁鍏剁嫭鐗圭殑浜戝師鐢熷寲瀹炵幇涓庝娇鐢ㄥ満鏅紝Dubbo-go 宸茬粡璧板嚭浜嗚嚜宸辩嫭鐗圭殑鍙戝睍璺緞銆� - -[bilibili 鐨� dubbo-go瑙嗛](https://m.bilibili.com/video/BV1BV411677w) \ No newline at end of file diff --git a/doc/md/getty/getty-development-log.md b/doc/md/getty/getty-development-log.md deleted file mode 100644 index c98be503adcda4ce51a2635a14cf25ef721b0e26..0000000000000000000000000000000000000000 --- a/doc/md/getty/getty-development-log.md +++ /dev/null @@ -1,224 +0,0 @@ -## [getty 寮€鍙戞棩蹇梋(http://alexstocks.github.io/html/getty.html) - -* * * - -_written by Alex Stocks on 2018/03/19锛岀増鏉冩墍鏈夛紝鏃犳巿鏉冧笉寰楄浆杞絖 - -### 0 璇存槑 - -* * * - -[getty](https://github.com/alexstocks/getty)鏄竴涓猤o璇█瀹炵幇鐨勭綉缁滃眰寮曟搸锛屽彲浠ュ鐞員CP/UDP/websocket涓夌缃戠粶鍗忚銆� - -2016骞�6鏈堟垜鍦ㄤ笂娴峰仛涓€涓嵆鏃堕€氳椤圭洰鏃讹紝鎺ュ彛灞傜殑搴曞眰缃戠粶椹卞姩鏄�褰撴椂鐨勫悓浜媅sanbit](https://github.com/sanbit)鍐欑殑锛�鍘熷缃戠粶灞傚疄鐜颁簡TCP Server锛屽叾鍛藉悕瑙勮寖瀛︿範浜嗚憲鍚嶇殑netty銆傚綋鏃惰繖涓紩鎿庢瘮杈冪畝娲侊紝闅忕潃鎴戝杩欎釜椤圭洰鐨勬敼杩涜繖涓綉缁滃眰寮曟搸涔熷氨闅忎箣杩涘寲浜嗭紙娣诲姞浜員CP Client銆佹娊璞″嚭浜� TCP connection 鍜� TCP session锛夛紝鑷�2016骞�8鏈堜唤锛堝張娣诲姞浜唚ebsocket锛夊叾涓庡師濮嬪疄鐜板凡缁忓ぇ寮傚叾瓒d簡锛屽緛寰楀師浣滆€呭拰鐩稿叧棰嗗鍚屾剰鍚庡氨鏀惧埌浜唃ithub涓娿€� - -灏嗚繎涓ゅ勾鐨勬椂闂存垜涓嶉棿鏂湴瀵瑰叾杩涜鏀硅繘锛屽勾榻挎笎澧炰絾璁板繂閫熻“锛岃寰楁湁蹇呰璁板綍涓嬩竴浜涘紑鍙戣繃绋嬩腑閬囧埌鐨勯棶棰�浠ュ強瑙e喅鏂规硶锛屼互澶囧皢鏉ュ洖蹇嗕箣鍙傝€冦€� - -### 1 UDP connection - -* * * - -2018骞�3鏈�5鏃� 璧风粰 getty 娣诲姞浜哢DP鏀寔銆� - -#### 1.1 UDP connect - -* * * - -UDP鑷韩鍒嗕负unconnected UDP鍜宑onnected UDP涓ょ锛宑onnected UDP鐨勫簳灞傚師鐞嗚涓嬪浘銆� - - - -褰撲竴绔殑UDP endpoint璋冪敤connect涔嬪悗锛宱s灏变細鍦ㄥ唴閮ㄧ殑routing table涓婃妸udp socket鍜屽彟涓€涓猠ndpoint鐨勫湴鍧€鍏宠仈璧锋潵锛屽湪鍙戣捣connect鐨剈dp endpoint绔缓绔嬭捣涓€涓崟鍚戠殑杩炴帴鍥涘厓缁勶細鍙戝嚭鐨刣atagram packet鍙兘鍙戝線杩欎釜endpoint锛堜笉绠endto鐨勬椂鍊欐槸鍚︽寚瀹氫簡鍦板潃锛変笖鍙兘鎺ユ敹杩欎釜endpoint鍙戞潵鐨剈dp datagram packet锛堝鍥�???鍙戞潵鐨勫寘浼氳OS涓㈠純锛夈€� - -UDP endpoint鍙戣捣connect鍚庯紝OS骞朵笉浼氳繘琛孴CP寮忕殑涓夋鎻℃墜锛屾搷浣滅郴缁熷叡浠呬粎璁板綍涓�UDP socket鐨刾eer udp endpoint 鍦板潃鍚庡氨鐞嗚В杩斿洖锛屼粎浠呬細鏍告煡瀵圭鍦板潃鏄惁瀛樺湪缃戠粶涓€� - -鑷充簬鍙︿竴涓猽dp endpoint鏄惁涓篶onnected udp鍒欐棤鍏崇揣瑕侊紝鎵€浠ョОudp connection鏄崟鍚戠殑杩炴帴銆傚鏋渃onnect鐨勫绔笉瀛樺湪鎴栬€呭绔鍙f病鏈夎繘绋嬬洃鍚紝鍒欏彂鍖呭悗瀵圭浼氳繑鍥濱CMP 鈥減ort unreachable鈥� 閿欒銆� - -濡傛灉涓€涓狿OSIX绯荤粺鐨勮繘绋�鍙戣捣UDP write鏃舵病鏈夋寚瀹歱eer UDP address锛屽垯浼氭敹鍒癊NOTCONN閿欒锛岃€岄潪EDESTADDRREQ銆� - - - -涓€鑸彂璧穋onnect鐨勪负 UDP client锛屽吀鍨嬬殑鍦烘櫙鏄疍NS绯荤粺锛�DNS client鏍规嵁/etc/resolv.conf閲岄潰鎸囧畾鐨凞NS server杩涜connect鍔ㄤ綔銆� - -鑷充簬 UDP server 鍙戣捣connect鐨勬儏褰㈡湁 TFTP锛�UDP client 鍜� UDP server 闇€瑕佽繘琛岄暱鏃堕棿鐨勯€氫俊锛� client 鍜� server 閮介渶瑕佽皟鐢� connect 鎴愪负 connected UDP銆� - -濡傛灉涓€涓� connected UDP 闇€瑕佹洿鎹� peer endpoint address锛屽彧闇€瑕侀噸鏂� connect 鍗冲彲銆� - -#### 1.2 connected UDP 鐨勬€ц兘 - -* * * - -connected UDP 鐨勪紭鍔胯瑙佸弬鑰冩枃妗�1銆傚亣璁�鏈変袱涓� datagram 闇€瑕佸彂閫侊紝unconnected UDP 鐨勮繘琛� write 鏃跺彂閫佽繃绋嬪涓嬶細 - -```none -* Connect the socket -* Output the first datagram -* Unconnect the socket -* Connect the socket -* Output the second datagram -* Unconnect the socket -``` - -姣忓彂閫佷竴涓寘閮介渶瑕佽繘琛� connect锛屾搷浣滅郴缁熷埌 routine table cache 涓垽鏂湰娆$洰鐨勫湴鍦板潃鏄惁涓庝笂娆′竴鑷达紝濡傛灉涓嶄竴鑷�杩橀渶瑕佷慨鏀� routine table銆� - -connected UDP 鐨勪袱娆″彂閫佽繃绋嬪涓嬶細 - -```none -* Connect the socket -* Output first datagram -* Output second datagram -``` - -杩欎釜 case 涓嬶紝鍐呮牳鍙湪绗竴娆¤瀹氫笅铏氭嫙閾炬帴鐨� peer address锛屽悗闈㈣繘琛岃繛缁彂閫佸嵆鍙€傛墍浠� connected UDP 鐨勫彂閫�杩囩▼鍑忓皯浜� 1/3 鐨勭瓑寰呮椂闂淬€� - -2017骞�5鏈�7鏃� 鎴戞浘鐢� [python 绋嬪簭](https://github.com/alexStocks/python-practice/blob/master/tcp_udp_http_ws/udp/client.py) 瀵逛簩鑰呬箣闂寸殑鎬ц兘鍋氳繃娴嬭瘯锛屽鏋� client 鍜� server 閮介儴缃插湪鏈満锛屾祴璇曠粨鏋滄樉绀哄彂閫� 100 000 閲忕殑 UDP datagram packet 鏃讹紝connected UDP 姣� unconnected UDP 灏戠敤浜� 2 / 13 鐨勬椂闂淬€� - -杩欎釜娴嬭瘯鐨勫彟涓€涓粨璁烘槸锛氫笉绠℃槸 connected UDP 杩樻槸 unconnected UDP锛屽鏋滃惎鐢ㄤ簡 SetTimeout锛屽垯浼氬澶у彂閫佸欢杩熴€� - -#### 1.3 Go UDP - -* * * - -Go 璇█ UDP 缂栫▼涔熷 connected UDP 鍜� unconnected UDP 杩涜浜嗘槑纭尯鍒嗭紝鍙傝€冩枃妗�2 璇︾粏鍦板垪鏄庝簡濡備綍浣跨敤鐩稿叧 API锛屾牴鎹繖绡囨枃妗d釜浜轰篃鍐欎竴涓� [绋嬪簭](https://github.com/alexstocks/go-practice/blob/master/udp-tcp-http/udp/connected-udp.go) 娴嬭瘯杩欎簺 API锛屾祴璇曠粨璁哄涓嬶細 - -```none -* 1 connected UDP 璇诲啓鏂规硶鏄� Read 鍜� Write锛� -* 2 unconnected UDP 璇诲啓鏂规硶鏄� ReadFromUDP 鍜� WriteToUDP锛堜互鍙� ReadFrom 鍜� WriteTo)锛� -* 3 unconnected UDP 鍙互璋冪敤 Read锛屽彧鏄棤娉曡幏鍙� peer addr锛� -* 4 connected UDP 鍙互璋冪敤 ReadFromUDP锛堝~鍐欑殑鍦板潃浼氳蹇界暐锛� -* 5 connected UDP 涓嶈兘璋冪敤 WriteToUDP锛屸€濆嵆浣挎槸鐩稿悓鐨勭洰鏍囧湴鍧€涔熶笉鍙互鈥濓紝鍚﹀垯浼氬緱鍒伴敊璇� 鈥渦se of WriteTo with pre-connected connection鈥濓紱 -* 6 unconnected UDP 涓嶈兘璋冪敤 Write, 鈥滃洜涓轰笉鐭ラ亾鐩爣鍦板潃鈥�, error:鈥漺rite: destination address requiredsmallnestMBP:udp smallnest鈥濓紱 -* 7 connected UDP 鍙互璋冪敤 WriteMsgUDP锛屼絾鏄湴鍧€蹇呴』涓� nil锛� -* 8 unconnected UDP 鍙互璋冪敤 WriteMsgUDP锛屼絾鏄�蹇呴』濉啓 peer endpoint address銆� -``` - -缁间笂缁撹锛岃缁熶竴浣跨敤 ReadFromUDP锛屽啓鍒欑粺涓€浣跨敤 WriteMsgUDP銆� - -#### 1.4 Getty UDP - -* * * - -鐗堟湰 v0.8.1 Getty 涓坊鍔� connected UDP 鏀寔鏃讹紝鍏惰繛鎺ュ嚱鏁� [dialUDP](https://github.com/alexstocks/getty/blob/master/client.go#L141) 杩欐槸绠€鍗曡皟鐢ㄤ簡 net.DialUDP 鍑芥暟锛屽鑷存槰鏃ワ紙20180318 22:19 pm锛夋祴璇曠殑鏃跺€欓亣鍒颁竴涓€幇璞★細鎶� peer UDP endpoint 鍏抽棴锛宭ocal udp endpoint 杩涜 connect 鏃� net.DialUDP 鍑芥暟杩斿洖鎴愬姛锛岀劧鍚� lsof 鍛戒护鏌ラ獙缁撴灉鏃剁湅鍒扮‘瀹炲瓨鍦ㄨ繖涓崟閾炬帴锛� - -```none -COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME -echo_clie 31729 alex 9u IPv4 0xa5d288135c97569d 0t0 UDP localhost:63410->localhost:10000 -``` - -鐒跺悗褰� net.UDPConn 杩涜 read 鍔ㄤ綔鐨勬椂鍊欙紝浼氬緱鍒伴敊璇� 鈥渞ead: connection refused鈥濄€� - -浜庢槸妯′豢C璇█涓 TCP client connect 鎴愬姛涓庡惁鍒ゆ柇鏂规硶锛屽 [dialUDP](https://github.com/alexstocks/getty/blob/master/client.go#L141) 鏀硅繘濡備笅锛� - -```none -* 1 net.DialUDP 鎴愬姛涔嬪悗锛屽垽鏂叾鏄惁鏄嚜杩炴帴锛屾槸鍒欓€€鍑猴紱 -* 2 connected UDP 鍚戝绔彂閫佷竴涓棤鐢ㄧ殑 datagram packet銆愨€漰ing鈥濆瓧绗︿覆锛屽绔細鍥犲叾闈炴纭� datagram 鑰屼涪寮冦€戯紝澶辫触鍒欓€€鍑猴紱 -* 3 connected UDP 鍙戣捣璇绘搷浣滐紝濡傛灉瀵圭杩斿洖 鈥渞ead: connection refused鈥� 鍒欓€€鍑猴紝鍚﹀垯灏卞垽鏂负 connect 鎴愬姛銆� -``` - -### 2 Compression - -* * * - -鍘诲勾缁� getty 娣诲姞浜� TCP/Websocket compression 鏀寔锛學ebsocket 搴撲娇鐢ㄧ殑鏄� [gorilla/websocket](https://github.com/gorilla/websocket/)锛孾Go 瀹樼綉](https://godoc.org/golang.org/x/net/websocket)涔熸帹鑽愯繖涓簱锛屽洜涓鸿嚜 `This package("golang.org/x/net/websocket") currently lacks some features`銆� - -#### 2.1 TCP compression - -* * * - -鏈€杩戝湪瀵� Websocket compression 杩涜娴嬭瘯鐨勬椂鍊欙紝鍙戠幇 CPU 寰堝鏄撳氨璺戝埌 100%锛屼笖绋嬪簭鍚姩鍚庡緢蹇氨 panic 閫€鍑轰簡銆� - -鏍规嵁 panic 淇℃伅鎻愮ず鏌ュ埌 [gorilla/websocket/conn.go:ReadMsg](https://github.com/gorilla/websocket/blob/master/conn.go#L1018) 鍑芥暟璋冪敤 [gorilla/websocket/conn.go:NextReader](https://github.com/gorilla/websocket/blob/master/conn.go#L928) 鍚庡氨绔嬪嵆 panic 閫€鍑轰簡銆俻anic 鐨� `琛ㄥ眰鍘熷洜` 鍒版槸寰堝鏄撴煡鏄庯細 - -* 1 [gorrilla/websocket:Conn::advanceFrame](https://github.com/gorilla/websocket/blob/master/conn.go#L768) 閬囧埌璇昏秴鏃堕敊璇紙io timeout锛�; -* 2 [gorrilla/websocket:ConnConn.readErr](https://github.com/gorilla/websocket/blob/master/conn.go#L941)璁板綍杩欎釜error锛� -* 3 [gorilla/websocket/conn.go:Conn::NextReader](https://github.com/gorilla/websocket/blob/master/conn.go#L959)寮€濮嬭鍙栦箣鍓嶅垯[妫€鏌ヨ繖涓敊璇痌(https://github.com/gorilla/websocket/blob/master/conn.go#L938)锛屽浠ュ墠鍙戠敓杩囬敊璇垯涓嶅啀璇诲彇 websocket frame锛屽苟瀵筟gorrilla/websocket:ConnConn.readErr绱Н璁℃暟](https://github.com/gorilla/websocket/blob/master/conn.go#L957)锛� -* 4 [褰揼orrilla/websocket:ConnConn.readErr鏁板€煎ぇ浜� 1000](https://github.com/gorilla/websocket/blob/master/conn.go#L958) 鐨勬椂鍊欙紝绋嬪簭灏变細panic 閫€鍑恒€� - -浣嗘槸涓轰綍鍙戠敓璇昏秴鏃堕敊璇垯姣棤澶寸华銆� - -2018/03/07 鏃ユ祴璇� TCP compression 鐨勬椂鍊欏彂鐜板惎鍔� compression 鍚庯紝绋嬪簭 CPU 涔熶細寰堝揩璺戝埌 100%锛岃繘涓€姝ヨ拷鏌ュ悗鍙戠幇鍑芥暟 [getty/conn.go:gettyTCPConn::read](https://github.com/alexstocks/getty/blob/master/conn.go#L228) 閲岄潰鐨� log 鏈夊緢澶� 鈥渋o timeout鈥� error銆傚綋鏃舵煡鍒拌繖涓敊璇緢鐤戞儜锛屽洜涓烘垜宸茬粡鍦� TCP read 涔嬪墠杩涜浜嗚秴鏃惰缃€怱etReadDeadline銆戯紝闅鹃亾鍚姩 compression 浼氬鑷磋秴鏃惰缃け鏁堜娇寰梥ocket鎴愪簡闈為樆濉炵殑socket锛� - -浜庢槸鍦� [getty/conn.go:gettyTCPConn::read](https://github.com/alexstocks/getty/blob/master/conn.go#L228) 涓坊鍔犱簡涓€涓€昏緫锛氬惎鐢� TCP compression 鐨勬椂涓嶅啀璁剧疆瓒呮椂鏃堕棿銆愰粯璁ゆ儏鍐典笅tcp connection鏄案涔呴樆濉炵殑銆戯紝CPU 100% 鐨勯棶棰樺緢蹇氨寰楀埌浜嗚В鍐炽€� - -鑷充簬涓轰綍 `鍚敤 TCP compression 浼氬鑷� SetDeadline 澶辨晥浣垮緱socket鎴愪簡闈為樆濉炵殑socket`锛屽浛浜庝釜浜鸿兘鍔涘拰绮惧姏锛屽緟灏嗘潵杩芥煡鍑虹粨鏋滃悗鍐嶅湪姝よˉ鍏呬箣銆� - -#### 2.2 Websocket compression - -* * * - -TCP compression 鐨勯棶棰樿В鍐冲悗锛屼釜浜虹寽鎯� Websocket compression 绋嬪簭閬囧埌鐨勯棶棰樻垨璁镐篃璺� `鍚敤 TCP compression 浼氬鑷� SetDeadline 澶辨晥浣垮緱socket鎴愪簡闈為樆濉炵殑socket` 鏈夊叧銆� - -浜庢槸鍊熼壌 TCP 鐨勮В鍐虫柟娉曪紝鍦� [getty/conn.go:gettyWSConn::read](https://github.com/alexstocks/getty/blob/master/conn.go#L527) 鐩存帴鎶婅秴鏃惰缃叧闂紝鐒跺悗 CPU 100% 琚В鍐筹紝涓旂▼搴忚繍杞甯搞€� - -### 3 unix socket - -鏈妭涓� getty 鏃犲叧锛屼粎浠呮槸鍦ㄤ娇鐢� unix socket 杩囩▼涓亣鍒颁竴浜� keypoint 鐨勮褰曘€� - -#### 3.1 reliable - -unix socket datagram 褰㈠紡鐨勫寘涔熸槸鍙潬鐨勶紝姣忔鍐欏繀鐒惰姹傚搴斾竴娆¤锛屽惁鍒欏啓鏂逛細琚樆濉炪€傚鏋滄槸 stream 褰㈠紡锛屽垯 buffer 娌℃湁婊′箣鍓嶏紝鍐欒€呮槸涓嶄細琚樆濉炵殑銆俤atagram 鐨勪紭鍔垮湪浜� api 绠€鍗曘€� - -```none -Unix sockets are reliable. If the reader doesn't read, the writer blocks. If the socket is a datagram socket, each write is paired with a read. If the socket is a stream socket, the kernel may buffer some bytes between the writer and the reader, but when the buffer is full, the writer will block. Data is never discarded, except for buffered data if the reader closes the connection before reading the buffer. ---[Do UNIX Domain Sockets Overflow?](https://unix.stackexchange.com/questions/283323/do-unix-domain-sockets-overflow) -``` - -```none -On most UNIX implementations, UNIX domain datagram sockets are always reliable and don't reorder - datagrams. ---[man 7 socketpair](http://www.man7.org/linux/man-pages/man7/unix.7.html) -``` - -鈥� ---[Do UNIX Domain Sockets Overflow?](https://unix.stackexchange.com/questions/283323/do-unix-domain-sockets-overflow) - -#### 3.2 buffer size - -datagram 褰㈠紡鐨� unix socket 鐨勫崟涓� datagram 鍖呮渶澶ч暱搴︽槸 130688 B銆� - -```none -AF_UNIX SOCK_DATAGRAM/SOCK_SEQPACKET datagrams need contiguous memory. Contiguous physical memory is hard to find, and the allocation fails. The max size actually is 130688 B. --- [the max size of AF_UNIX datagram message that can be sent in linux](https://stackoverflow.com/questions/4729315/what-is-the-max-size-of-af-unix-datagram-message-that-can-be-sent-in-linux) -``` - -```none -It looks like AF_UNIX sockets don't support scatter/gather on current Linux. it is a fixed size 130688 B. --- [Difference between UNIX domain STREAM and DATAGRAM sockets?](https://stackoverflow.com/questions/13953912/difference-between-unix-domain-stream-and-datagram-sockets) -``` - -### 4 Goroutine Pool - -闅忕潃 [dubbogo/getty](https://github.com/dubbogo/getty) 琚� [apache/dubbo-go](https://github.com/apache/dubbo-go/) 鐢ㄤ綔搴曞眰 tcp 鐨� transport 寮曟搸锛屽浜庢彁楂樼郴缁熷悶鍚愮殑闇€瑕侊紝[dubbogo/getty](https://github.com/dubbogo/getty) 闈复鐫€涓嬩竴姝ョ殑杩涘寲瑕佹眰锛歔**閽堝 dubbo-go 鍜� Getty 鐨勭綉缁� I/O 涓庣嚎绋嬫淳鍙戣繖涓€閮ㄥ垎杩涜杩涗竴姝ヤ紭鍖�**](https://www.oschina.net/question/3820517_2306822)銆傚叾涓殑鍏抽敭灏辨槸娣诲姞 Goroutine Pool銆愪笅鏂囩畝绉� gr pool銆戯紝浠ュ垎绂荤綉缁� I/O 鍜� 閫昏緫澶勭悊銆� - -Gr Pool 鎴愬憳鏈変换鍔¢槦鍒椼€愬叾鏁扮洰涓� M銆戝拰 Gr 鏁扮粍銆愬叾鏁扮洰涓� N銆戜互鍙婁换鍔°€愭垨鑰呯О涔嬩负娑堟伅銆戯紝鏍规嵁 N 鐨勬暟鐩彉鍖栧叾绫诲瀷鍒嗕负鍙几缂╀笌鍥哄畾澶у皬锛屽彲浼哥缉 Gr Pool 濂藉鏄彲浠ラ殢鐫€浠诲姟鏁扮洰鍙樺寲澧炲噺 N 浠ヨ妭绾� CPU 鍜屽唴瀛樿祫婧愶紝浣嗕竴鑸笉鐢氬父鐢紝姣斾汉浠ュ墠鎾歌繃涓€涓悗灏辫汉鍦ㄦ垜鐨� [github repo](https://github.com/alexstocks/goext/blob/master/sync/pool/worker_pool.go) 閲岄潰浜嗐€� - -[dubbogo/getty](https://github.com/dubbogo/getty) 鍙叧娉� N 鍊煎浐瀹氬ぇ灏忕殑 gr pool锛屼笖涓嶈€冭檻鏀跺埌鍖呭悗鐨勫鐞嗛『搴忋€傝濡傦紝[dubbogo/getty](https://github.com/dubbogo/getty) 鏈嶅姟绔敹鍒颁簡瀹㈡埛绔彂鏉ョ殑 A 鍜� B 涓や釜缃戠粶鍖咃紝涓嶈€冭檻澶勭悊椤哄簭鐨� gr pool 妯″瀷鍙兘閫犳垚瀹㈡埛绔厛鏀跺埌 B 鍖呯殑 response锛屽悗鎵嶆敹鍒� A 鍖呯殑 response銆� - -濡傛灉瀹㈡埛绔殑姣忔璇锋眰閮芥槸鐙珛鐨勶紝娌℃湁鍓嶅悗椤哄簭鍏崇郴锛屽垯甯︽湁 gr pool 鐗规€х殑 [dubbogo/getty](https://github.com/dubbogo/getty) 涓嶈€冭檻椤哄簭鍏崇郴鏄病鏈夐棶棰樼殑銆傚鏋滀笂灞傜敤鎴峰叧娉� A 鍜� B 璇锋眰澶勭悊鐨勫墠鍚庨『搴忥紝鍒欏彲浠ユ妸 A 鍜� B 涓や釜璇锋眰鍚堝苟涓轰竴涓姹傦紝鎴栬€呮妸 gr pool 鐗规€у叧闂€� - -### 4.1 鍥哄畾澶у皬 Gr Pool - -鎸夌収 M 涓� N 鐨勬瘮渚嬶紝鍥哄畾澶у皬 Gr Pool 鍙堝尯鍒嗕负 1:1銆�1:N銆丮:N 涓夌被銆� - -1:N 绫诲瀷鐨� Gr Pool 鏈€鏄撳疄鐜帮紝涓汉 2017 骞村湪椤圭洰 [kafka-connect-elasticsearch](https://github.com/AlexStocks/kafka-connect-elasticsearch) 涓疄鐜拌繃姝ょ被鍨嬬殑 [Gr Pool](https://github.com/AlexStocks/kafka-connect-elasticsearch/blob/master/app/worker.go)锛氫綔涓烘秷璐硅€呬粠 kafka 璇诲彇鏁版嵁鐒跺悗鏀惧叆娑堟伅闃熷垪锛岀劧鍚庡悇涓� worker gr 浠庢闃熷垪涓彇鍑轰换鍔¤繘琛屾秷璐瑰鐞嗐€� - -鍚� [dubbogo/getty](https://github.com/dubbogo/getty) 涓坊鍔� gr pool 鏃朵篃鏇惧疄鐜拌繃杩欎釜鐗堟湰鐨� [gr pool](https://github.com/dubbogo/getty/pull/6/commits/4b32c61e65858b3eea9d88d8f1c154ab730c32f1)銆傝繖绉嶆ā鍨嬬殑 gr pool 鏁翠釜 pool 鍙垱寤轰竴涓� chan锛� 鎵€鏈� gr 鍘昏鍙栬繖涓€涓� chan锛屽叾缂虹偣鏄細闃熷垪璇诲啓妯″瀷鏄� 涓€鍐欏璇伙紝鍥犱负 go channel 鐨勪綆鏁堢巼銆愭暣浣撲娇鐢ㄤ竴涓� mutex lock銆戦€犳垚绔炰簤婵€鐑堬紝褰撶劧鍏剁綉缁滃寘澶勭悊椤哄簭鏇存棤浠庝繚璇併€� - -[dubbogo/getty](https://github.com/dubbogo/getty) 鍒濆鐗堟湰鐨� [gr pool](https://github.com/dubbogo/getty/pull/6/files/c4d06e2a329758a6c65c46abe464a90a3002e428#diff-9922b38d89e2ff9f820f2ce62f254162) 妯″瀷涓� 1:1锛屾瘡涓� gr 澶氭湁鑷繁鐨� chan锛屽叾璇诲啓妯″瀷鏄竴鍐欎竴璇伙紝鍏朵紭鐐规槸鍙繚璇佺綉缁滃寘澶勭悊椤哄簭鎬э紝 -濡傝鍙� kafka 娑堟伅鏃跺€欙紝鎸夌収 kafka message 鐨� key 鐨� hash 鍊间互鍙栦綑鏂瑰紡銆恏ash(message key) % N銆戝皢鍏舵姇閫掑埌鏌愪釜 task queue锛屽垯鍚屼竴 key 鐨勬秷鎭兘鍙互淇濊瘉澶勭悊鏈夊簭銆備絾 [鏈涘摜](http://alexstocks.github.io/html/10) 鎸囧嚭浜嗚繖绉嶆ā鍨嬬殑缂洪櫡锛氭瘡涓猼ask澶勭悊瑕佹湁鏃堕棿锛屾鏂规浼氶€犳垚鏌愪釜 gr 鐨� chan 閲岄潰鏈� task 鍫靛锛屽氨绠楀叾浠� gr 闂茬潃锛屼篃娌″姙娉曞鐞嗕箣銆愪换鍔″鐞嗏€滈ゥ楗库€濄€戙€� - -[wenwei86](https://github.com/wenweihu86) 缁欏嚭浜嗘洿杩涗竴姝ョ殑 1:1 妯″瀷鐨勬敼杩涙柟妗堬細姣忎釜 gr 涓€涓� chan锛屽鏋� gr 鍙戠幇鑷繁鐨� chan 娌℃湁璇锋眰锛屽氨鍘绘壘鍒殑 chan锛屽彂閫佹柟涔熷敖閲忓彂寰€娑堣垂蹇殑鍗忕▼銆傝繖涓柟妗堢被浼间簬 go runtime 鍐呴儴鐨� MPG 璋冨害绠楁硶锛屼絾鏄鎴戜釜浜烘潵璇寸畻娉曞拰瀹炵幇鍧囧お澶嶆潅锛屾晠鑰屾病鏈夐噰鐢ㄣ€� - -[dubbogo/getty](https://github.com/dubbogo/getty) 鐩墠閲囩敤浜� M:N 妯″瀷鐗堟湰鐨� [gr pool](https://github.com/dubbogo/getty/pull/6/commits/1991056b300ba9804de0554dbb49b5eb04560c4b)锛屾瘡涓� task queue 琚� N/M 涓� gr 娑堣垂锛岃繖绉嶆ā鍨嬬殑浼樼偣鏄吋椤惧鐞嗘晥鐜囧拰閿佸帇鍔涘钩琛★紝鍙互鍋氬埌鎬讳綋灞傞潰鐨勪换鍔″鐞嗗潎琛°€傛鐗堟湰涓� Task 娲惧彂閲囩敤 RoundRobin 鏂瑰紡銆� - -## 鎬荤粨 - -* * * - -鏈枃鎬荤粨浜� [getty](https://github.com/alexstocks/getty) 杩戞湡寮€鍙戣繃绋嬩腑閬囧埌鐨勪竴浜涢棶棰橈紝鍥夸簬涓汉姘村钩鍙兘缁欏嚭鐩墠鑷涓烘渶濂界殑瑙e喅鏂规硶銆愬浣曚綘鏈夋洿濂界殑瀹炵幇锛岃鐣欒█銆戙€� - -闅忕潃 [getty](https://github.com/alexstocks/getty) 鑻ユ湁鏂扮殑 improvement 鎴栬€呮柊 feature锛屾垜浼氬強鏃惰ˉ鍔犳鏂囥€� - -姝よ銆� - -## 鍙傝€冩枃妗� - -* * * - -* 1 [connect Function with UDP](http://www.masterraghu.com/subjects/np/introduction/unix_network_programming_v1.3/ch08lev1sec11.html) -* 2 [娣卞叆Go UDP缂栫▼](http://colobu.com/2016/10/19/Go-UDP-Programming/) \ No newline at end of file diff --git a/doc/md/hessian2/dubbo-go-hessian2-performance-optimization.md b/doc/md/hessian2/dubbo-go-hessian2-performance-optimization.md deleted file mode 100644 index 875ea1589699cfd1167e4802825d273ca6fb2b4e..0000000000000000000000000000000000000000 --- a/doc/md/hessian2/dubbo-go-hessian2-performance-optimization.md +++ /dev/null @@ -1,233 +0,0 @@ -# 璁颁竴娆″ dubbo-go-hessian2 鐨勬€ц兘浼樺寲 - -2020骞�05鏈�02鏃� - -鐩綍 - -[dubbo-go-hessian2](https://github.com/apache/dubbo-go-hessian2) 鏄竴涓敤 Go 瀹炵幇鐨� hessian 鍗忚 v2.0 鐗堟湰鐨勫簭鍒楀寲搴撱€備粠椤圭洰鍚嶇О閲屽彲浠ョ湅鍒颁富瑕佺敤鍦� [dubbo-go](http://github.com/apache/dubbo-go) 杩欎釜椤圭洰閲屻€俬essian 鍗忚浣滀负 dubbo 鐨勯粯璁ゅ崗璁紝鍥犳瀵规€ц兘鏈夋瘮杈冮珮鐨勮姹傘€� - -## 绔嬮」 - -璀鏈夌綉鏂� [鍩轰簬 Go 鐨勯┈铚傜獫鏃呮父缃戝垎甯冨紡 IM 绯荤粺鎶€鏈疄璺礭(https://my.oschina.net/u/4231722/blog/3168223) 鎶� dubbo-go 涓庡叾浠� RPC 妗嗘灦瀵规瘮濡備笅锛� - - - -鏈夐壌浜庢锛岀ぞ鍖轰究寮€濮嬬粍缁囬儴鍒嗕汉鍔涳紝鍚姩浜嗗 dubbo-go 鎬ц兘浼樺寲銆愬悓鏃朵篃娆㈣繋涓婃枃浣滆€呭埌閽夐拤缇� 23331795 涓庢垜浠ぞ鍖轰氦娴併€戙€傝€冨療 dubbo-go 鐨勫悇涓粍浠讹紝澶у涓嶇害鑰屽悓鍦板喅瀹氶鍏堜紭鍖栨瘮杈冪嫭绔嬬殑 [dubbo-go-hessian2](https://github.com/apache/dubbo-go-hessian2)銆� - -## 璧锋 - -鍦ㄦ渶寮€濮嬬殑鏃跺€欙紝骞舵病鏈夊お鎯虫竻妤氶渶瑕佸仛浠€涔堬紝鏀瑰摢涓湴鏂癸紝瑕佷紭鍖栧埌浣曠绋嬪害锛屾墍浠ユ渶绠€鍗曠殑鍔炴硶灏辨槸鐪嬬湅鐜扮姸銆� - -棣栧厛锛屽啓浜嗕竴涓畝鍗曠殑渚嬪瓙锛屾妸甯歌鐨勭被鍨嬪埌涓€涓粨鏋勪綋閲岋紝鐒跺悗娴嬩竴涓嬭€楁椂銆� - -```go -type Mix struct { - A int - B string - CA time.Time - CB int64 - CC string - CD []float64 - D map[string]interface{} -} - -m := Mix{A: int('a'), B: `hello`} -m.CD = []float64{1, 2, 3} -// 鍐嶅姞涓€灞傦紝浣垮緱鏁版嵁鏄惧緱澶嶆潅涓€浜� -m.D = map[string]interface{}{`floats`: m.CD, `A`: m.A, `m`: m} -``` - -> 鐪嬭捣鏉ヨ繖涓粨鏋勪綋璺熺湡瀹炵幆澧冮噷鍙兘涓嶅お涓€鏍凤紝浣嗘槸鐢ㄦ潵鍒嗘瀽鐡堕搴旇鏄冻澶熶簡銆� - -鐒跺悗鐩存帴闈� Go Test 鍐欎釜娴嬭瘯鐢ㄤ緥锛� - -```go -func BenchmarkEncode(b *testing.B) { - for i := 0; i < b.N; i++ { - _, _ = encodeTarget(&m) - } -} - -func BenchmarkDecode(b *testing.B) { - for i := 0; i < b.N; i++ { - _, _ = NewDecoder(bytes).Decode() - } -} -``` - -> go test -benchmem -run=^$ github.com/apache/dubbo-go-hessian2 -bench "^B" -vet=off -v - -寰楀埌涓嬮潰缁撴灉锛� - -```plain -BenchmarkEncode-8 89461 11485 ns/op 3168 B/op 122 allocs/op -BenchmarkDecode-8 64914 19595 ns/op 7448 B/op 224 allocs/op -``` - -**_娉細鍩轰簬 MacBook Pro 2018銆愪富棰� Intel Core i7 2.6 GHz銆戞祴璇曘€俖** - -涓嶄笌鍚岀被搴撲綔妯悜姣旇緝锛屼粎浠呬粠杩欎釜娴嬭瘯缁撴灉閲岀殑鏁板瓧涓婃棤娉曞緱鍑轰换浣曠粨璁恒€傚鎴戜滑鏉ヨ鏇撮噸瑕佺殑鏄細瀹冨埌搴曟參鍦ㄥ摢閲屻€傞鍏堟兂鍒扮殑鎵嬫渚挎槸锛氬€熷姪 pprof 鐢熸垚鐏劙鍥撅紝瀹氫綅 CPU 娑堣€椼€� - -pprof 宸ュ叿鐨勭敤娉曞彲浠ュ弬鑰冨畼缃戞枃妗c€傛湰鏂囨祴璇曟椂鐩存帴浣跨敤浜� Goland 鍐呯疆 `CPU Profiler` 鐨勬祴璇曞伐鍏凤細娴嬭瘯鍑芥暟宸﹁竟鐨� `Run xx with 'CPU Profiler'`銆� - - - -娴嬭瘯璺戝畬鍚庯紝 Goland 鐩存帴鏄剧ず鐏劙鍥惧涓嬶細 - - - -浠庤繖涓浘閲屽彲浠ョ湅鍒帮紝娴嬭瘯浠g爜澶ф鍗犵敤浜嗗乏杈圭殑 70%锛屽彸杈� 30% 鏄繍琛屾椂鐨勪竴浜涙秷鑰楋紝杩愯鏃堕儴鍒嗕竴鑸寘鎷� gc銆乻chedule 涓ゅぇ鍧楋紝涓€鑸笉鑳界洿鎺ヤ紭鍖栥€傚浘涓婂乏杈瑰彲浠ユ竻鏅板湴鐪嬪埌 `encObject` 閲� `RegisterPOJO` 鍜� `Encode` 鍚勫崰浜嗗皬涓€鍗娿€� - -瀹屾垚搴忓垪鍖栧姛鑳界殑 `Encode` 娑堣€� CPU 濡傛涔嬪灏氬彲鐞嗚В锛岃€岀洿瑙変笂锛屾妸绫诲璞¤繘琛岃В鏋愬拰娉ㄥ唽 `RegisterPOJO` 鏄笉搴旇鎴愪负娑堣€楀ぇ鎴风殑銆傛墍浠ョ寽娴嬭繖涓湴鏂硅涔堟敞鍐屾湁闂锛岃涔堟湁閲嶅娉ㄥ唽銆� - -涓嬩竴姝ュ垎鏋愶紝鐢ㄤ簡涓€涓畝鍗曠殑鍔炴硶锛氬湪杩欎釜鍑芥暟閲屽姞鏃ュ織銆傜劧鍚庣户缁啀璺戜竴涓� benchmark锛屽彲浠ョ湅鍒版€ц兘鐡堕澶勶細瀹瑰櫒璇诲啓鐨勫湴鏂广€� - -鏃㈢劧鐭ラ亾杩欓噷鍋氫簡璁稿閲嶅鐨勬棤鐢ㄥ姛锛屽氨寰堝鏄撴槑纭紭鍖栨柟娉曪細鍔犵紦瀛樸€傛妸宸茬粡瑙f瀽杩囩殑缁撴灉缂撳瓨涓嬫潵锛屼笅娆¢渶瑕佺殑鏃跺€欑洿鎺ュ彇鍑轰娇鐢ㄣ€傛敼杩涘悗鐨勪唬鐮佺畝鍗曞涓嬶細 - -```go -if goName, ok := pojoRegistry.j2g[o.JavaClassName()]; ok { - return pojoRegistry.registry[goName].index -} -``` - -杩欓噷鍒氬紑濮嬫湁涓枒闂紝涓轰粈涔堣鍒嗕袱姝ュ厛鍙� `JavaClassName` 鍐嶅彇 `GoName` 鑰屼笉鐩存帴鍙栧悗鑰咃紵鐪嬭捣鏉ュソ鍍忔槸澶氭涓€涓句簡锛屼絾鍏跺疄 `JavaClassName` 鏄被鐩存帴瀹氫箟鐨勶紝鑰� `GoName` 鍗翠緷璧栦竴娆″弽灏勩€傜浉杈冧箣涓嬩袱娆¤浆鎹㈢殑娑堣€楀彲浠ュ拷鐣ヤ簡銆傛敼瀹屼箣鍚庡啀璺戜竴涓� benchmark锛� - -```plain -BenchmarkEncode-8 197593 5601 ns/op 1771 B/op 51 allocs/op -``` - -闈炲父鎯婅鍦扮湅鍒帮紝鍚炲悙閲忓ぇ姒傛槸鍘熸潵鐨� 200%銆備笌涓婇潰鐨勭伀鐒板浘瀵规瘮锛屽彲浠ョ矖鐣ョ殑璁$畻锛宍RegiserPOJO` 澶ф鍗犱簡鏁翠綋鐨� 30%锛屾敼杩涘悗搴旇涔熷彧鏈夊師鏉ョ殑 `1 / 0.7 * 100% = 140%` 鎵嶅銆傜瓟妗堜篃鍙互鍦ㄧ伀鐒板浘閲屾壘鍒帮細 - - - -闄や簡 `RegisterPOJO` 琚共鎺変互澶栵紝涓庝笂鍥惧姣旓紝杩樻湁鍝簺鍖哄埆鍛紵鍙互鐪嬪埌锛屽師鏉ュ崰鐢ㄥ皢杩� 20% 鐨� `GC` 涔熷嚑涔庣湅涓嶅埌浜嗐€傛墍浠ョ湡瀹炵殑 CPU 鍒╃敤鐜囦篃瑕佸姞涓婅繖閮ㄥ垎鐨勫闀匡紝澶х害 `1 / 0.5 * 100% = 200%`銆� - -> 闇€瑕佹彁閱掔殑鏄紝benchmark 璺戝嚭鏉ョ殑缁撴灉骞朵笉绠楃ǔ瀹氾紝鎵€浠ヤ綘鑷繁鍘嬪嚭鏉ョ殑缁撴灉璺熸垜鐨勫彲鑳戒笉澶竴鑷达紝鐢氳嚦澶氳窇鍑犳鐨勭粨鏋滀篃涓嶅畬鍏ㄤ竴鏍枫€傚浜庝笂闈㈢殑鏁板瓧浣犲彧瑕佺悊瑙e師鍥犲氨濂斤紝涓婁笅娴姩 10% 涔熼兘鏄甯歌寖鍥淬€� 鍙嶈繃鏉ョ湅锛岃繖涔熺畻鏄� GC 浼樺寲鐨勪竴涓搴︺€傜鍒� GC 鍗犵敤 CPU 杩囬珮锛岄櫎浜嗗幓涓€涓釜鎹㈠璞℃睜锛屼篃鍙互閲嶇偣鐪嬬湅閭d簺琚绻佽皟鐢ㄧ殑妯″潡銆傚綋鐒舵洿绉戝鐨勬柟娉曟槸鐪� `pprof heap` / `memory profiler` 銆� - -閽堝杩欎釜缁撴灉锛屽彲浠ョ湅鍒� `encObject` 浠ヤ笂閮借鍒囧壊鎴愪簡涓嶅悓鐨勫皬鏍煎瓙锛屼笉鍐嶆湁鍍� `RegisterPOJO` 閭f牱鐨勫ぇ鍧楀崰鐢紝涓€鑸儏鍐典笅锛屼紭鍖栧埌杩欓噷灏卞彲浠ヤ簡銆� - -鐪嬪畬浜� `Encode` 锛屽啀鏉ョ湅鐪� `Decode` 锛屾柟娉曠被浼硷紝鐩存帴鐪� Goland 鐢熸垚鐨勭伀鐒板浘锛� - - - -杩欎釜鍥炬湁鐐硅糠鎯戞€э紝濂藉儚涔熻鍒嗘垚宸笉澶氱殑灏忔牸瀛愪簡銆傚彲浠ョ偣寮€ `decObject` 杩欎竴灞傦細 - - - -杩欎釜鏃跺€欏師鏉ュ皬鐨� `...` 浼氭樉绀哄叿浣撳唴瀹癸紝闇€瑕佹敞鎰忕殑鏄噷闈㈡湁涓や釜 `findField` 锛屽湪澶嶆潅鐨勮皟鐢ㄩ噷缁忓父浼氶亣鍒拌繖绉嶆儏鍐碉細涓€涓€楄祫婧愮殑鍑芥暟琚垎鍒颁簡璁稿鍑芥暟閲岋紝瀵艰嚧鍦ㄧ湅鐏劙鍥炬椂骞朵笉鑳界洿瑙傚湴鐪嬪埌瀹冨氨鏄摱棰堛€傛瘮杈冨父瑙佺殑鏈夊簭鍒楀寲銆佹棩蹇椼€佺綉缁滆姹傜瓑姣忎釜妯″潡閮戒細骞蹭竴鐐瑰嵈鍙堟病鏈変竴涓叏灞€鐨勫嚱鏁板彧骞蹭粬涓€浠朵簨銆傝繖涓椂鍊欓櫎浜嗚倝鐪煎幓鎵句互澶栦篃鍙互鍊熷姪浜庡彟澶栦竴涓伐鍏凤細 - - - -鍦ㄨ繖涓� `Method List` 閲屽彲浠ユ槑鏄剧湅鍒� `findField` 宸茬粡琚悎骞跺埌涓€璧蜂簡锛屾€诲崰鐢ㄦ帴杩� CPU 鐨勪竴鍗婏紝鐪嬪埌杩欓噷浣犲ぇ姒傚氨鐭ラ亾瀹冨簲璇ユ槸涓紭鍖栫偣浜嗐€� - -## 杩涗竴姝� - -鍑芥暟 `func findField(name string, typ reflect.Type) ([]int, error)` 鐨勪綔鐢ㄦ槸鍦ㄤ竴涓被鍨嬮噷瀵绘壘鎸囧畾灞炴€х殑浣嶇疆锛圛ndex锛屽弽灏勫寘閲岀敤瀹冩潵琛ㄧず鏄鍑犱釜瀛楁锛夈€傚緢瀹规槗鎯冲埌锛屽浜庝竴涓粨鏋勪綋鏉ヨ锛屾瘡涓瓧娈电殑浣嶇疆浠庝竴寮€濮嬪氨纭畾浜嗭紝鎵€浠ョ敤缂撳瓨涓€鏍峰彲浠ヨВ鍐宠繖涓棶棰樸€備竴涓畝鍗曠殑浼樺寲濡備笅锛� - -```go -func findField(name string, typ reflect.Type) (indexes []int, err error) { - typCache, _ := _findFieldCache.LoadOrStore(typ, &sync.Map{}) - indexes, _ := typCache.(*sync.Map).Load(name) - if len(indexes.([]int)) == 0 { - err = perrors.Errorf("failed to find field %s", name) - } - - return indexes.([]int), err - - // ... -} -``` - -```plain -- BenchmarkDecode-8 57723 17987 ns/op 7448 B/op 224 allocs/op -+ BenchmarkDecode-8 82995 12272 ns/op 7224 B/op 126 allocs/op -``` - -鍙互鐪嬪埌锛岀粨鏋滃苟涓嶅棰勬湡鐨勯偅鏍锋彁鍗囦竴鍊嶆晥鏋溿€傝繖涓唬鐮佷箥鐪嬭捣鏉ワ紝濂藉儚闄や簡鏈変竴浜涘暟鍡︾殑鏂█锛屽ソ鍍忎篃娌″埆鐨勪笢瑗夸簡锛屼负浠€涔堝彧鏈� 60% 鐨勬彁鍗囧憿锛屾垜浠繕鏄€熷姪涓嬪伐鍏� - - - -鍙互鐪嬪埌锛氳缂撳瓨鑰楄垂浜� 7% 鐨勮祫婧愩€傚叾涓紝`sync.(*Map)` 涓嶄究浼樺寲锛屼絾 `newobejct` 鏄摢閲屾潵鐨勫憿锛熶唬鐮侀噷鍙互鐪嬪埌锛屽敮涓€瀹氫箟鏂板璞$殑鍦版柟灏辨槸鍑芥暟绗竴琛岀殑 `&sync.Map` 锛屾垜鎶辩潃璇曚竴璇曠殑蹇冩€佹妸 `LoadOrStore` 鎷嗘垚浜嗕袱姝� - -```go -typCache, ok := _findFieldCache.Load(typ) -if !ok { - typCache = &sync.Map{} - _findFieldCache.Store(typ, typCache) -} -``` - -```plain -- BenchmarkDecode-8 82995 12272 ns/op 7224 B/op 126 allocs/op -+BenchmarkDecode-8 103876 12385 ns/op 6568 B/op 112 allocs/op -``` - -鐪嬬粨鏋滐紝鐫€瀹炲嚭涔庢剰鏂欍€傛兂璧锋潵浠ュ墠鐪� Java 浠g爜鏃剁粡甯哥鍒拌繖鏍风殑浠g爜锛� - -```go -if ( logLevel == `info` ) { - log.Info(...) -} -``` - -浠ュ墠涓€鐩磋寰楄繖涓� `if` 鐪熸槸娴垂鎰熸儏锛岀幇鍦ㄦ兂鏉ワ紝鍒槸涓€鐣鐭ヤ簡銆傚鏋滆兘鎻愪緵涓€涓� `LoadOrStore(key, func() interface{})` 鐨勬柟娉曪紝 浼氫笉浼氭洿濂戒竴浜涳紵 鍒拌繖閲岀殑璇濓紝鎴戜滑鍋氫簡涓や釜姣旇緝澶х殑浼樺寲锛屾暣浣撴€ц兘澶х害鎻愬崌浜嗕竴鍊嶃€傚鏋滀粩缁嗙湅鐏劙鍥撅紝杩樹細鍙戠幇鏈夊緢澶氬皬鐨勪紭鍖栫偣锛屼絾鏄敱浜庢病鏈変粈涔堢壒鍒川鐨勯璺冿紝杩欓噷涓嶅啀璧樿堪銆傛湁鍏磋叮鐨勫皬浼欎即鍙互鍒� [PR Imp: cache in reflection](https://github.com/apache/dubbo-go-hessian2/pull/179) 閲岄槄璇荤浉鍏崇殑璁ㄨ銆� - -## 鏇磋繘涓€姝� - -浼樺寲鍒版锛屼緷鐒惰棌鐫€涓€涓洿娣卞眰娆$殑闂锛氭壘涓€涓彲闈犵殑鍙傝€冨熀鍑嗭紝浠ヨ 閲忕洰鍓嶇殑宸ヤ綔缁撴灉銆愭瘯绔熸病鏈夊姣斿氨娌℃湁浼ゅ銆戙€備竴涓緢瀹规槗鎯冲埌鐨勬瘮杈冨璞℃槸 Go 璇█瀹樻柟鐨� `json` 鏍囧噯搴撱€� - -鎶� [dubbo-go-hessian2](https://github.com/apache/dubbo-go-hessian2) 涓� `json` 鏍囧噯搴撳仛姣旇緝濡備笅锛� - -```shell -$ go test -benchmem -run=^$ github.com/apache/dubbo-go-hessian2 -bench "^B" -vet=off -v -count=5 -goos: darwin -goarch: amd64 -pkg: github.com/apache/dubbo-go-hessian2 -BenchmarkJsonEncode -BenchmarkJsonEncode-8 249114 4719 ns/op 832 B/op 15 allocs/op -BenchmarkJsonEncode-8 252224 4862 ns/op 832 B/op 15 allocs/op -BenchmarkJsonEncode-8 240582 4739 ns/op 832 B/op 15 allocs/op -BenchmarkJsonEncode-8 213283 4784 ns/op 832 B/op 15 allocs/op -BenchmarkJsonEncode-8 227101 4665 ns/op 832 B/op 15 allocs/op -BenchmarkEncode -BenchmarkEncode-8 182184 5615 ns/op 1771 B/op 51 allocs/op -BenchmarkEncode-8 183007 5565 ns/op 1771 B/op 51 allocs/op -BenchmarkEncode-8 218664 5593 ns/op 1771 B/op 51 allocs/op -BenchmarkEncode-8 214704 5886 ns/op 1770 B/op 51 allocs/op -BenchmarkEncode-8 181861 5605 ns/op 1770 B/op 51 allocs/op -BenchmarkJsonDecode -BenchmarkJsonDecode-8 123667 8412 ns/op 1776 B/op 51 allocs/op -BenchmarkJsonDecode-8 122796 8497 ns/op 1776 B/op 51 allocs/op -BenchmarkJsonDecode-8 132103 8471 ns/op 1776 B/op 51 allocs/op -BenchmarkJsonDecode-8 130687 8492 ns/op 1776 B/op 51 allocs/op -BenchmarkJsonDecode-8 127668 8476 ns/op 1776 B/op 51 allocs/op -BenchmarkDecode -BenchmarkDecode-8 107775 10092 ns/op 6424 B/op 98 allocs/op -BenchmarkDecode-8 110996 9950 ns/op 6424 B/op 98 allocs/op -BenchmarkDecode-8 111036 10760 ns/op 6424 B/op 98 allocs/op -BenchmarkDecode-8 113151 10063 ns/op 6424 B/op 98 allocs/op -BenchmarkDecode-8 109197 10002 ns/op 6424 B/op 98 allocs/op -PASS -ok github.com/apache/dubbo-go-hessian2 28.680s -``` - -铏界劧姣忔鐨勭粨鏋滀笉绋冲畾锛屼絾灏辨暣浣撹€岃█锛岀洰鍓嶇殑搴忓垪鍖栧拰鍙嶅簭鍒楀寲鎬ц兘澶ф閮芥槸 JSON 鏍囧噯搴撶殑 85% 宸﹀彸銆傝繖涓垚缁╁苟涓嶈兘璇村ソ锛屼絾鐭湡鍐呰兘鑺� 20 鍒嗙殑绮惧姏寰楀埌涓€涓� 80 鍒嗙殑缁撴灉锛屽簲璇ヤ篃鏄彲浠ユ帴鍙楃殑銆傝嚦浜庡墿涓嬬殑 20%锛屽氨涓嶆槸闈犳敼鍑犺浠g爜灏辫兘鎼炲畾浜嗐€傚唴瀛樺垎閰嶆槸鍚﹀悎鐞嗐€佹墽琛屾祦绋嬫槸鍚︽湁鍐椾綑锛岄兘鏄渶瑕佷竴鐐逛竴婊村湴鍘绘敼杩涖€� - -## 鎬荤粨 - -鏈€鍚庯紝鎴戜滑鏉ユ€荤粨涓€涓嬫湰鏂囦富瑕佺殑浼樺寲姝ラ锛� - -* 鍒╃敤鐏劙鍥� 蹇€熷畾浣嶆秷鑰� CPU 杈冮珮鐨勬ā鍧楋紱 -* 鍒╃敤缂撳瓨鏈哄埗锛屽揩閫熸秷闄ら噸澶嶇殑璁$畻锛� -* 鍒╃敤 CallTree銆丮ethodList 绛夊绉嶅伐鍏峰垎鏋愬皬娈典唬鐮佺殑绮剧‘娑堣€楋紱 -* 閬靛惊浜屽叓瀹氬緥锛屼互鏈€灏忕殑鎴愭湰鍋氬嚭涓€涓晥鏋滄樉钁楃殑鏀剁泭銆� - -### 娆㈣繋鍔犲叆 dubbo-go 绀惧尯 - -鐩墠 dubbo-go 宸茬粡鍒颁簡涓€涓瘮杈冪ǔ瀹氭垚鐔熺殑鐘舵€併€傚湪鎺ヤ笅鏉ョ殑鐗堟湰閲岄潰锛屾垜浠皢闆嗕腑绮惧姏鍦ㄤ簯鍘熺敓涓娿€備笅涓€涓増鏈紝鎴戜滑灏嗛鍏堝疄鐜板簲鐢ㄧ淮搴︾殑鏈嶅姟娉ㄥ唽锛岃繖鏄竴涓拰鐜版湁娉ㄥ唽妯″瀷瀹屽叏涓嶅悓鐨勬柊鐨勬敞鍐屾ā鍨嬨€備篃鏄垜浠湞鐫€浜戝師鐢熷姫鍔涚殑涓€涓叧閿増鏈€� - -dubbo-go 閽夐拤缇� **23331795** 娆㈣繋浣犵殑鍔犲叆銆� - -## 浣滆€呬俊鎭� - -寮犳収浠侊紝github id micln锛屼换鑱� 寰楀埌 APP 鍚庣寮€鍙戙€� \ No newline at end of file diff --git a/doc/md/hessian2/mosn-performance-optimization.md b/doc/md/hessian2/mosn-performance-optimization.md deleted file mode 100644 index c798bf094eedf778bf7b9fce3ce396041645c715..0000000000000000000000000000000000000000 --- a/doc/md/hessian2/mosn-performance-optimization.md +++ /dev/null @@ -1,491 +0,0 @@ -# [璁颁竴娆″湪 mosn 瀵� dubbo銆乨ubbo-go-hessian2 鐨勬€ц兘浼樺寲](https://gocn.vip/topics/10492) - -### 鑳屾櫙 - -铓傝殎鍐呴儴瀵� Service Mesh 鐨勭ǔ瀹氭€у拰鎬ц兘瑕佹眰鏄瘮杈冮珮鐨勶紝鍐呴儴 mosn 骞挎硾鐢ㄤ簬鐢熶骇鐜銆傚湪浜戜笂鍜屽紑婧愮ぞ鍖猴紝RPC 棰嗗煙 dubbo 鍜� spring cloud 鍚屾牱骞挎硾鐢ㄤ簬鐢熶骇鐜锛屾垜浠湪 mosn 鍩虹涓婏紝鏀寔浜� dubbo 鍜� spring cloud 娴侀噺浠g悊銆傛垜浠彂鐜板湪鏀寔 dubbo 鍗忚杩囩▼涓紝缁忚繃 Mesh 娴侀噺浠g悊鍚庯紝鎬ц兘鏈夐潪甯稿ぇ鐨勬€ц兘鎹熻€楋紝鍦ㄥぇ鍟嗘埛钀藉湴 Mesh 涓篃瀵规€ц兘鏈夎緝楂樿姹傦紝鍥犳鏈枃浼氶噸鐐规弿杩板湪鍩轰簬 Go 璇█搴� [dubbo-go-hessian2](https://github.com/apache/dubbo-go-hessian2) 銆乨ubbo 鍗忚涓 [mosn](https://github.com/mosn/mosn) 鎵€鍋氱殑鎬ц兘浼樺寲銆� - -### 鎬ц兘浼樺寲姒傝堪 - -鏍规嵁瀹為檯涓氬姟閮ㄧ讲鍦烘櫙锛屽苟娌℃湁閫夌敤楂樻€ц兘鏈哄櫒锛屼娇鐢ㄦ櫘閫� linux 鏈哄櫒锛岄厤缃拰鍘嬫祴鍙傛暟濡備笅锛� - -- Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz 4 鏍� 16G 銆� -- pod 閰嶇疆 `2c銆�1g`锛孞VM 鍙傛暟 `-server -Xms1024m -Xmx1024m`銆� -- 缃戠粶寤惰繜 0.23 ms, 2 鍙� linux 鏈哄櫒锛屽垎鍒儴缃� server + mosn, 鍘嬫祴绋嬪簭 [rpc-perfomance](https://github.com/zonghaishang/rpc-performance)銆� - -缁忚繃 3 杞€ц兘浼樺寲鍚庯紝浣跨敤浼樺寲鐗堟湰 mosn 灏嗕細鑾峰緱浠ヤ笅鎬ц兘鏀剁泭锛堟鏋堕殢鏈� 512 鍜� 1k 瀛楄妭鍘嬫祴锛夛細 - -- 512 瀛楄妭鏁版嵁锛歮osn + dubbo 鏈嶅姟璋冪敤 TPS 鏁翠綋鎻愬崌 55-82.8%锛孯T 闄嶄綆 45% 宸﹀彸锛屽唴瀛樺崰鐢� 40M锛� -- 1k 鏁版嵁锛歮osn + dubbo 鏈嶅姟璋冪敤 TPS 鏁翠綋鎻愬崌 51.1-69.3%锛孯T 闄嶄綆 41%宸﹀彸, 鍐呭瓨鍗犵敤 41M銆� - -### 鎬ц兘浼樺寲宸ュ叿 pprof - -纾ㄥ垁涓嶈鐮嶆煷宸ワ紝鍦ㄦ€ц兘浼樺寲鍓嶉鍏堣鎵惧埌鎬ц兘鍗$偣锛屾壘鍒版€ц兘鍗$偣鍚庯紝鍙︿竴涓毦鐐瑰氨鏄浣曠敤楂樻晥浠g爜浼樺寲鏇夸唬 slow code銆傚洜涓鸿殏铓� Service Mesh 鏄熀浜� go 璇█瀹炵幇鐨勶紝鎴戜滑棣栭€� go 鑷甫鐨� pprof 鎬ц兘宸ュ叿锛屾垜浠畝瑕佷粙缁嶈繖涓伐鍏峰浣曚娇鐢ㄣ€傚鏋滄垜浠� go 搴撹嚜甯� http.Server 鏃跺苟涓斿湪 main 澶撮儴瀵煎叆`import _ "net/http/pprof"`锛実o 浼氬府鎴戜滑鎸傝浇瀵瑰簲鐨� handler , 璇︾粏鍙互鍙傝€� [godoc](https://pkg.go.dev/net/http/pprof?tab=doc) 銆� - -鍥犱负 mosn 榛樿浼氬湪`34902`绔彛鏆撮湶 http 鏈嶅姟锛岄€氳繃浠ヤ笅鍛戒护杞绘澗鑾峰彇 mosn 鐨勬€ц兘璇婃柇鏂囦欢锛� - -``` -go tool pprof -seconds 60 http://benchmark-server-ip:34902/debug/pprof/profile -# 浼氱敓鎴愮被浼间互涓嬫枃浠讹紝璇ュ懡浠ら噰鏍穋pu 60绉� -# pprof.mosn.samples.cpu.001.pb.gz -``` - -鐒跺悗缁х画鐢� pprof 鎵撳紑璇婃柇鏂囦欢锛屾柟渚垮湪娴忚鍣ㄦ煡鐪嬶紝鍦ㄥ浘 1-1 缁欏嚭鍘嬫祴鍚� profiler 鐏劙鍥撅細 - -``` -# http=:8000浠h〃pprof鎵撳紑8000绔彛鐒跺悗鐢ㄤ簬web娴忚鍣ㄥ垎鏋� -# mosnd浠h〃mosn鐨勪簩杩涘埗鍙墽琛屾枃浠讹紝鐢ㄤ簬鍒嗘瀽浠g爜绗﹀彿 -# pprof.mosn.samples.cpu.001.pb.gz鏄痗pu璇婃柇鏂囦欢 -go tool pprof -http=:8000 mosnd pprof.mosn.samples.cpu.001.pb.gz -``` - -) - -<center>鍥� 1-2 Dispatch 鐏劙鍥炬槑缁� </center> - - - -<center>鍥� 1-3 Receive 鐏劙鍥炬槑缁� </center> - -### 鎬ц兘浼樺寲鎬濊矾 - -鏈枃閲嶇偣璁板綍浼樺寲浜嗗摢浜� case 鎵嶈兘鎻愬崌 50%浠ヤ笂鐨勫悶鍚愰噺鍜岄檷浣� RT锛屽洜姝ゅ悗闈㈢洿鎺ュ垎鏋愬綋鍓嶄紭鍖栦簡鍝簺 case銆傚湪姝や箣鍓嶏紝鎴戜滑浠� Dispatch 涓轰緥锛岀湅涓嬪畠涓虹敋涔堥偅涔堝悆鎬ц兘 銆傚湪 terminal 涓€氳繃浠ヤ笅鍛戒护鍙互鏌ョ湅浠g爜琛岃€楄垂 CPU 鏁版嵁锛堜唬鐮佹湁鍒犲噺锛夛細 - -```go -go tool pprof mosnd pprof.mosn.samples.cpu.001.pb.gz -(pprof) list Dispatch -Total: 1.75mins - 370ms 37.15s (flat, cum) 35.46% of Total - 10ms 10ms 123:func (conn *streamConnection) Dispatch(buffer types.IoBuffer) { - 40ms 630ms 125: log.DefaultLogger.Tracef("stream connection dispatch data string = %v", buffer.String()) - . . 126: - . . 127: // get sub protocol codec - . 250ms 128: requestList := conn.codec.SplitFrame(buffer.Bytes()) - 20ms 20ms 129: for _, request := range requestList { - 10ms 160ms 134: headers := make(map[string]string) - . . 135: // support dynamic route - 50ms 920ms 136: headers[strings.ToLower(protocol.MosnHeaderHostKey)] = conn.connection.RemoteAddr().String() - . . 149: - . . 150: // get stream id - 10ms 440ms 151: streamID := conn.codec.GetStreamID(request) - . . 156: // request route - . 50ms 157: requestRouteCodec, ok := conn.codec.(xprotocol.RequestRouting) - . . 158: if ok { - . 20.11s 159: routeHeaders := requestRouteCodec.GetMetas(request) - . . 165: } - . . 166: - . . 167: // tracing - 10ms 80ms 168: tracingCodec, ok := conn.codec.(xprotocol.Tracing) - . . 169: var span types.Span - . . 170: if ok { - 10ms 1.91s 171: serviceName := tracingCodec.GetServiceName(request) - . 2.17s 172: methodName := tracingCodec.GetMethodName(request) - . . 176: - . . 177: if trace.IsEnabled() { - . 50ms 179: tracer := trace.Tracer(protocol.Xprotocol) - . . 180: if tracer != nil { - 20ms 1.66s 181: span = tracer.Start(conn.context, headers, time.Now()) - . . 182: } - . . 183: } - . . 184: } - . . 185: - . 110ms 186: reqBuf := networkbuffer.NewIoBufferBytes(request) - . . 188: // append sub protocol header - 10ms 950ms 189: headers[types.HeaderXprotocolSubProtocol] = string(conn.subProtocol) - 10ms 4.96s 190: conn.OnReceive(ctx, streamID, protocol.CommonHeader(headers), reqBuf, span, isHearbeat) - 30ms 60ms 191: buffer.Drain(requestLen) - . . 192: } - . . 193:} -``` - -閫氳繃涓婇潰 `list Dispatch` 鍛戒护锛屾€ц兘鍗$偣涓昏鍒嗗竷鍦� `159` 銆� `171` 銆乣172` 銆� `181` 銆佸拰 `190` 绛夎锛屼富瑕佸崱鐐瑰湪瑙g爜 dubbo 鍙傛暟銆侀噸澶嶈В鍙傛暟銆乼racer銆佸彂搴忓垪鍖栧拰 log 绛夈€� - -#### 1. 浼樺寲 dubbo 瑙g爜 GetMetas - -鎴戜滑閫氳繃瑙g爜 dubbo 鐨� body 鍙互鑾峰緱浠ヤ笅淇℃伅锛岃皟鐢ㄧ殑鐩爣鎺ュ彛锛� interface 锛夊拰璋冪敤鏂规硶鐨勬湇鍔″垎缁勶紙 group 锛夌瓑淇℃伅锛屼絾鏄渶瑕佽烦杩囨墍鏈変笟鍔℃柟娉曞弬鏁帮紝鐩墠浣跨敤寮€婧愮殑 [dubbo-go-hessian2](https://github.com/apache/dubbo-go-hessian2) 搴擄紝瑙f瀽 string 鍜� map 鎬ц兘杈冨樊, 鎻愬崌 hessian 搴撹В鐮佹€ц兘锛屼細鍦ㄦ湰鏂囧悗闈㈣瑙c€� - -**浼樺寲鎬濊矾锛�** - -鍦� mosn 鐨� ingress 绔紙 mosn 鐩存帴杞彂璇锋眰缁欐湰鍦� java server 杩涚▼锛�, 鎴戜滑鏍规嵁璇锋眰鐨� path 鍜� version 绐ユ帰鐢ㄦ埛浣跨敤鐨� interface 鍜� group , 鏋勫缓姝g‘鐨� dataID 鍙互杩涜鏃犺剳杞彂锛屾棤闇€瑙g爜 body锛屾Θ鍙栨€ц兘鎻愬崌銆� - -鎴戜滑鍙互鍦ㄦ湇鍔℃敞鍐屾椂锛屾瀯寤烘湇鍔″彂甯冪殑 path 銆乿ersion 鍜� group 鍒� interface 銆乬roup 鏄犲皠銆傚湪 mosn 杞彂 dubbo 璇锋眰鏃跺彲浠ラ€氳繃璇婚攣鏌� cache + 璺宠繃瑙g爜 body锛屽姞閫� mosn 鎬ц兘銆� - -鍥犳鎴戜滑鏋勫缓浠ヤ笅 cache 瀹炵幇锛堟暟缁� + 閾捐〃鏁版嵁缁撴瀯锛�, 鍙弬瑙� [浼樺寲浠g爜 diff](https://github.com/mosn/mosn/pull/1174/commits/9020ee9995cd15a7a4321a375a9506cf94dc70a8#diff-f5ff30debd68b8318c8236a0b5ccde07R6) 锛� - -```go -// metadata.go -// DubboPubMetadata dubbo pub cache metadata -var DubboPubMetadata = &Metadata{} - -// DubboSubMetadata dubbo sub cache metadata -var DubboSubMetadata = &Metadata{} - -// Metadata cache service pub or sub metadata. -// speed up for decode or encode dubbo peformance. -// please do not use outside of the dubbo framwork. -type Metadata struct { - data map[string]*Node - mu sync.RWMutex // protect data internal -} - -// Find cached pub or sub metatada. -// caller should be check match is true -func (m *Metadata) Find(path, version string) (node *Node, matched bool) { - // we found nothing - if m.data == nil { - return nil, false - } - - m.mu.RLocker().Lock() - // for performance - // m.mu.RLocker().Unlock() should be called. - - // we check head node first - head := m.data[path] - if head == nil || head.count <= 0 { - m.mu.RLocker().Unlock() - return nil, false - } - - node = head.Next - // just only once, just return - // for dubbo framwork, that's what we're expected. - if head.count == 1 { - m.mu.RLocker().Unlock() - return node, true - } - - var count int - var found *Node - - for ; node != nil; node = node.Next { - if node.Version == version { - if found == nil { - found = node - } - count++ - } - } - - m.mu.RLocker().Unlock() - return found, count == 1 -} - -// Register pub or sub metadata -func (m *Metadata) Register(path string, node *Node) { - m.mu.Lock() - // for performance - // m.mu.Unlock() should be called. - - if m.data == nil { - m.data = make(map[string]*Node, 4) - } - - // we check head node first - head := m.data[path] - if head == nil { - head = &Node{ - count: 1, - } - // update head - m.data[path] = head - } - - insert := &Node{ - Service: node.Service, - Version: node.Version, - Group: node.Group, - } - - next := head.Next - if next == nil { - // fist insert, just insert to head - head.Next = insert - // record last element - head.last = insert - m.mu.Unlock() - return - } - - // we check already exist first - for ; next != nil; next = next.Next { - // we found it - if next.Version == node.Version && next.Group == node.Group { - // release lock and no nothing - m.mu.Unlock() - return - } - } - - head.count++ - // append node to the end of the list - head.last.Next = insert - // update last element - head.last = insert - m.mu.Unlock() -} -``` - -閫氳繃鏈嶅姟娉ㄥ唽鏃舵瀯寤哄ソ鐨� cache锛屽彲浠ュ湪 mosn 鐨� stream 鍋氳В鐮佹椂鍛戒腑 cache , 鏃犻渶瑙g爜鍙傛暟鑾峰彇鎺ュ彛鍜� group 淇℃伅锛屽彲鍙傝[浼樺寲浠g爜 diff](https://github.com/mosn/mosn/pull/1174/commits/9020ee9995cd15a7a4321a375a9506cf94dc70a8#diff-73d1153005841c788c91116915f460a5R188) : - -```go -// decoder.go -// for better performance. -// If the ingress scenario is not using group, -// we can skip parsing attachment to improve performance -if listener == IngressDubbo { - if node, matched = DubboPubMetadata.Find(path, version); matched { - meta[ServiceNameHeader] = node.Service - meta[GroupNameHeader] = node.Group - } -} else if listener == EgressDubbo { - // for better performance. - // If the egress scenario is not using group, - // we can skip parsing attachment to improve performance - if node, matched = DubboSubMetadata.Find(path, version); matched { - meta[ServiceNameHeader] = node.Service - meta[GroupNameHeader] = node.Group - } -} -``` - -鍦� mosn 鐨� egress 绔紙 mosn 鐩存帴杞彂璇锋眰缁欐湰鍦� java client 杩涚▼锛�, 鎴戜滑閲囩敤绫讳技鐨勬€濊矾, 鎴戜滑鏍规嵁璇锋眰鐨� path 鍜� version 鍘荤鎺㈢敤鎴蜂娇鐢ㄧ殑 interface 鍜� group , 鏋勫缓姝g‘鐨� dataID 鍙互杩涜鏃犺剳杞彂锛屾棤闇€瑙g爜 body锛屾Θ鍙栨€ц兘鎻愬崌銆� - -#### 2. 浼樺寲 dubbo 瑙g爜鍙傛暟 - -鍦� dubbo 瑙g爜鍙傛暟鍊肩殑鏃跺€� 锛宮osn 閲囩敤鐨勬槸 hessian 鐨勬鍒欒〃杈惧紡鏌ユ壘锛岄潪甯歌€楄垂鎬ц兘銆傛垜浠厛鐪嬩笅浼樺寲鍓嶅悗 benchmark 瀵规瘮, 鎬ц兘鎻愬崌 50 鍊嶃€� - -```go -go test -bench=BenchmarkCountArgCount -run=^$ -benchmem -BenchmarkCountArgCountByRegex-12 200000 6236 ns/op 1472 B/op 24 allocs/op -BenchmarkCountArgCountOptimized-12 10000000 124 ns/op 0 B/op 0 allocs/op -``` - -**浼樺寲鎬濊矾锛�** - -鍙互娑堥櫎姝e垯琛ㄨ揪寮忥紝閲囩敤绠€鍗曞瓧绗︿覆瑙f瀽璇嗗埆鍙傛暟绫诲瀷涓暟锛� [dubbo 缂栫爜鍙傛暟涓暟瀛楃涓插疄鐜癩(https://github.com/zonghaishang/dubbo/blob/e0fd702825a274379fb609229bdb06ca0586122e/dubbo-common/src/main/java/org/apache/dubbo/common/utils/ReflectUtils.java#L370) 骞朵笉澶嶆潅, 涓昏缁欏璞″姞 L 鍓嶇紑銆佹暟缁勫姞[銆乸rimitive 绫诲瀷鏈夊崟瀛楃浠f浛銆傞噰鐢� go 鍙互瀹炵幇鍚岀瓑瑙f瀽, 鍙互鍙傝€僛浼樺寲浠g爜 diff](https://github.com/mosn/mosn/pull/1174/commits/9020ee9995cd15a7a4321a375a9506cf94dc70a8#diff-73d1153005841c788c91116915f460a5R245) 锛� - -``` -func getArgumentCount(desc string) int { - len := len(desc) - if len == 0 { - return 0 - } - - var args, next = 0, false - for _, ch := range desc { - - // is array ? - if ch == '[' { - continue - } - - // is object ? - if next && ch != ';' { - continue - } - - switch ch { - case 'V', // void - 'Z', // boolean - 'B', // byte - 'C', // char - 'D', // double - 'F', // float - 'I', // int - 'J', // long - 'S': // short - args++ - default: - // we found object - if ch == 'L' { - args++ - next = true - // end of object ? - } else if ch == ';' { - next = false - } - } - - } - return args -} -``` - -#### 3. 浼樺寲 dubbo hessian go 瑙g爜 string 鎬ц兘 - -鍦ㄥ浘 1-2 涓彲浠ョ湅鍒� dubbo hessian go 鍦ㄨВ鐮� string 鍗犳瘮 CPU 閲囨牱杈冮珮锛屾垜浠湪瑙g爜 dubbo 璇锋眰鏃讹紝浼氳В鏋� dubbo 妗嗘灦鐗堟湰銆佽皟鐢� path 銆佹帴鍙g増鏈拰鏂规硶鍚嶏紝杩欎簺閮芥槸 string 绫诲瀷锛宒ubbo hessian go 瑙f瀽 string 浼氬奖鍝� RPC 鎬ц兘銆� - -鎴戜滑棣栧厛璺戜竴涓� benchmar k 鍓嶅悗瑙g爜 string 鎬ц兘瀵规瘮锛屾€ц兘鎻愬崌 56.11%锛� 瀵瑰簲鍒� RPC 涓湁 5% 宸﹀彸鎻愬崌銆� - -``` -BenchmarkDecodeStringOriginal-12 1967202 613 ns/op 272 B/op 6 allocs/op -BenchmarkDecodeStringOptimized-12 4477216 269 ns/op 224 B/op 5 allocs/op -``` - -**浼樺寲鎬濊矾锛�** - -鐩存帴浣跨敤 UTF-8 byte 瑙g爜锛屾€ц兘鏈€楂橈紝涔嬪墠鍏堣В鐮� byte 鎴� rune , 瀵� rune 瑙g爜鎴� string 锛屽強鍏惰€楄垂鎬ц兘銆傚鍔犳壒閲� string chunk copy 锛岄檷浣� read 璋冪敤锛屽苟涓斾娇鐢� unsafe 杞崲 string 锛堥伩鍏嶄竴浜涙牎楠岋級锛屽洜涓轰唬鐮佷紭鍖� diff 杈冨锛岃繖閲岀粰鍑篬浼樺寲浠g爜 PR](https://github.com/apache/dubbo-go-hessian2/pull/188) 銆� - -go SDK 浠g爜`runtime/string.go#slicerunetostring`锛� rune 杞崲鎴� string 锛夛紝 鍚屾牱鏄妸 rune 杞垚 byte 鏁扮粍锛岃繖閲岀粰浜嗘垜浼樺寲鎬濊矾鍚彂銆� - -#### 4. 浼樺寲 hessian 搴撶紪瑙g爜瀵硅薄 - -铏界劧娑堥櫎浜� dubbo 鐨� body 瑙g爜閮ㄥ垎锛屼絾鏄� mosn 鍦ㄥ鐞� dubbo 璇锋眰鏃讹紝蹇呴』瑕佸€熷姪 hessian 鍘� decode 璇锋眰澶撮儴鐨勬鏋剁増鏈€佽姹� path 鍜屾帴鍙g増鏈€笺€備絾鏄瘡娆″湪瑙g爜鐨勬椂鍊欓兘浼氬垱寤哄簭鍒楀寲瀵硅薄锛屽紑閿€闈炲父楂橈紝鍥犱负 hessian 姣忔鍦ㄥ垱寤� reader 鐨勬椂鍊欎細 allocate 4k 鏁版嵁骞� reset銆� - -``` - 10ms 10ms 75:func unSerialize(serializeId int, data []byte, parseCtl unserializeCtl) *dubboAttr { - 10ms 140ms 82: attr := &dubboAttr{} - 80ms 2.56s 83: decoder := hessian.NewDecoderWithSkip(data[:]) -ROUTINE ======================== bufio.NewReaderSize in /usr/local/go/src/bufio/bufio.go - 50ms 2.44s (flat, cum) 2.33% of Total - . 220ms 55: r := new(Reader) - 50ms 2.22s 56: r.reset(make([]byte, size), rd) - . . 57: return r - . . 58:} -``` - -鎴戜滑鍙互鍐欎釜姹犲寲鍐呭瓨鍓嶅悗鎬ц兘瀵规瘮, 鎬ц兘鎻愬崌 85.4% , [benchmark 鐢ㄤ緥](https://github.com/zonghaishang/dubbo-go-hessian2/blob/9b418c4e2700964f244e6b982855b4e89b45990d/string_test.go#L161) 锛� - -```go -BenchmarkNewDecoder-12 1487685 803 ns/op 4528 B/op 9 allocs/op -BenchmarkNewDecoderOptimized-12 10564024 117 ns/op 128 B/op 3 allocs/op -``` - -**浼樺寲鎬濊矾锛�** - -鍦ㄦ瘡娆$紪瑙g爜鏃讹紝姹犲寲 hessian 鐨� decoder 瀵硅薄锛屾柊澧� NewCheapDecoderWithSkip 骞舵敮鎸� reset 澶嶇敤 decoder 銆� - -``` -var decodePool = &sync.Pool{ - New: func() interface{} { - return hessian.NewCheapDecoderWithSkip([]byte{}) - }, -} - -// 鍦ㄨВ鐮佹椂鎸夌収濡備笅鏂规硶璋冪敤 -decoder := decodePool.Get().(*hessian.Decoder) -// fill decode data -decoder.Reset(data[:]) -hessianPool.Put(decoder) -``` - -#### 5. 浼樺寲閲嶅瑙g爜 service 鍜� methodName 鍊� - -xprotocol 鍦ㄥ疄鐜� xprotocol.Tracing 鑾峰彇鏈嶅姟鍚嶇О鍜屾柟娉曟椂锛屼細瑙﹀彂璋冪敤骞惰В鏋� 2 娆★紝璋冪敤寮€閿€姣旇緝澶с€� - -``` - 10ms 1.91s 171: serviceName := tracingCodec.GetServiceName(request) - . 2.17s 172: methodName := tracingCodec.GetMethodName(request) -``` - -**浼樺寲鎬濊矾锛�** - -鍥犱负鍦� GetMetas 閲岄潰宸茬粡瑙f瀽杩囦竴娆′簡锛屽彲浠ユ妸瑙f瀽杩囩殑 headers 浼犺繘鍘伙紝濡傛灉 headers 鏈変簡灏变笉鐢ㄥ啀鍘昏В鏋愪簡锛屽苟涓旈噸鏋勬帴鍙e悕绉颁负涓€涓紝杩斿洖鍊间负浜屽厓缁勶紝娑堥櫎涓€娆¤皟鐢ㄣ€� - -#### 6. 浼樺寲 streamID 绫诲瀷杞崲 - -鍦� go 涓皢 byte 鏁扮粍鍜� streamID 杩涜浜掕浆鐨勬椂鍊欙紝姣旇緝璐规€ц兘銆� - -**浼樺寲鎬濊矾锛�** - -鐢熶骇浠g爜涓�, 灏介噺涓嶈浣跨敤 fmt.Sprintf 鍜� fmt.Printf 鍘诲仛绫诲瀷杞崲鍜屾墦鍗颁俊鎭€傚彲浠ヤ娇鐢� strconv 鍘昏浆鎹€€� - -``` - . 430ms 147: reqIDStr := fmt.Sprintf("%d", reqID) -60ms 4.10s 168: fmt.Printf("src=%s, len=%d, reqid:%v\n", streamID, reqIDStrLen, reqIDStr) -``` - -#### 7. 浼樺寲鏄傝吹鐨勭郴缁熻皟鐢� - -mosn 鍦ㄨВ鐮� dubbo 鐨勮姹傛椂锛屼細鍦� header 涓涓€浠借繙绋� host 鐨勫湴鍧€锛屽苟涓斿湪 for 寰幆涓幏鍙� remote IP锛岀郴缁熻皟鐢ㄥ紑閿€姣旇緝楂樸€� - -**浼樺寲鎬濊矾锛�** - -``` - 50ms 920ms 136: headers[strings.ToLower(protocol.MosnHeaderHostKey)] = conn.connection.RemoteAddr().String() -``` - -鍦ㄨ幏鍙栬繙绋嬪湴鍧€鏃讹紝灏藉彲鑳藉湪 streamConnection 涓� cache 杩滅▼ IP 鍊硷紝涓嶈姣忔閮藉幓璋冪敤 RemoteAddr銆� - -#### 8. 浼樺寲 slice 鍜� map 瑙﹀彂鎵╁鍜� rehash - -鍦� mosn 澶勭悊 dubbo 璇锋眰鏃讹紝浼氭牴鎹帴鍙c€佺増鏈拰鍒嗙粍鍘绘瀯寤� dataID 锛岀劧鍚庡尮閰� cluster , 浼氬垱寤洪粯璁� slice 鍜� map 瀵硅薄锛岀粡杩囨€ц兘璇婃柇锛屽鑷翠笉鏂� allocate slice 鍜� grow map 瀹归噺姣旇緝璐规€ц兘銆� - -**浼樺寲鎬濊矾锛�** - -浣跨敤 slice 鍜� map 鏃讹紝灏藉彲鑳介浼板閲忓ぇ灏忥紝浣跨敤 make(type, capacity) 鍘绘寚瀹氬垵濮嬪ぇ灏忋€� - -#### 9. 浼樺寲 trace 鏃ュ織绾у埆杈撳嚭 - -mosn 涓笉灏戜唬鐮佸湪澶勭悊閫昏緫鏃讹紝浼氭墦寰堝 trace 绾у埆鐨勬棩蹇楋紝骞朵笖浼氫紶閫掍笉灏戝弬鏁板€笺€� - -**浼樺寲鎬濊矾锛�** - -璋冪敤 trace 杈撳嚭鍓嶏紝灏介噺鍒ゆ柇涓€涓嬫棩蹇楃骇鍒紝濡傛灉鏈夊涓� trace 璋冪敤锛屽敖鍙兘鎶婃墍鏈夊瓧绗︿覆鍐欏埌 buf 涓紝鐒跺悗鎶� buf 鍐呭鍐欏埌鏃ュ織涓紝骞朵笖灏藉彲鑳藉皯鐨勮皟鐢� trace 鏃ュ織鏂规硶銆� - -#### 10. 浼樺寲 tracer銆乴og 鍜� metrics - -鍦ㄥぇ淇冩湡闂达紝瀵规満鍣ㄧ殑鎬ц兘瑕佹眰杈冮珮锛岀粡杩囨€ц兘璇婃柇锛宼racer銆乵osn log 鍜� cloud metrics 鍐欐棩蹇楋紙 IO 鎿嶄綔锛夐潪甯歌€楄垂鎬ц兘銆� - -**浼樺寲鎬濊矾锛�** - -閫氳繃閰嶇疆涓績涓嬪彂閰嶇疆鎴栬€呭鍔犲ぇ淇冨紑鍏筹紝鍏佽 API 璋冪敤杩欎簺 feature 鐨勫紑鍏炽€� - -``` -/api/v1/downgrade/on -/api/v1/downgrade/off -``` - -#### 11. 浼樺寲 route header 瑙f瀽 - -mosn 涓湪鍋氳矾鐢卞墠锛岄渶瑕佸仛澶ч噺鐨� header 鐨� map 璁块棶锛屾瘮濡� IDC銆乤ntvip 绛夐€昏緫鍒ゆ柇锛屽晢涓氱増鎴栬€呭紑婧� mosn 涓嶉渶瑕佽繖浜涢€昏緫锛岃繖浜涗篃浼氬崰鐢ㄤ竴浜涘紑閿€銆� - -**浼樺寲鎬濊矾锛�** - -濡傛灉鏄簯涓婇€昏緫锛屼富绔欑殑閫昏緫閮戒笉璧般€� - -#### 12. 浼樺寲 featuregate 璋冪敤 - -鍦� mosn 涓鐞嗚姹傛椂锛屼负浜嗗尯鍒嗕富绔欏拰鍟嗕笟鐗堣矾鐢遍€昏緫锛屼細閫氳繃 featuregate 鍒ゆ柇閫昏緫璧板摢閮ㄥ垎銆傞€氳繃 featuregate 璋冪敤寮€閿€杈冨ぇ锛岄渶瑕侀绻佺殑鍋氱被鍨嬭浆鎹㈠拰澶氬眰 map 鍘昏幏鍙栥€� - -**浼樺寲鎬濊矾锛�** - -閫氳繃涓€涓� bool 鍙橀噺璁板綍 featuregate 瀵瑰簲寮€鍏筹紝濡傛灉娌℃湁鍒濆鍖栬繃锛屽氨涓诲姩璋冪敤涓€涓� featuregate銆� - -### 鏈潵鎬ц兘浼樺寲鎬濊€� - -缁忚繃鍑犺疆鎬ц兘浼樺寲 锛岀洰鍓嶇湅鐏劙鍥撅紝鍗$偣閮藉湪 connection 鐨� read 鍜� write 锛屽彲浠ヤ紭鍖栫殑绌洪棿姣旇緝灏忎簡銆備絾鏄彲鑳戒粠浠ヤ笅鍦烘櫙涓幏寰楁敹鐩婏細 - -- 鍑忓皯 connection 鐨� read 鍜� write 娆℃暟 (syscall) 銆� -- 浼樺寲 IO 绾跨▼妯″瀷锛屽噺灏戞惡绋嬪拰涓婁笅鏂囧垏鎹㈢瓑銆� - -浣滀负缁撴潫锛岀粰鍑轰簡鏈€缁堜紭鍖栧悗鐨勭伀鐒板浘 锛屽ぇ閮ㄥ垎鍗$偣閮藉湪绯荤粺璋冪敤鍜岀綉缁滆鍐�, 璇峰弬鑰冨浘 1-4銆� - - - -<center>鍥� 1-4 浼樺寲鐗堟湰 mosn + dubbo 鐏嚎鍥�</center> - -### 鍏朵粬 - -pprof 宸ュ叿寮傚父寮哄ぇ锛屽彲浠ヨ瘖鏂� CPU銆乵emory銆乬o 鍗忕▼銆乼racer 鍜屾閿佺瓑锛岃宸ュ叿鍙互鍙傝€� [godoc](https://blog.golang.org/pprof)锛屾€ц兘浼樺寲鍙傝€冿細 - -- https://blog.golang.org/pprof - -- https://www.cnblogs.com/Dr-wei/p/11742414.html - -- https://www.youtube.com/watch?v=N3PWzBeLX2M - -### 鍏充簬浣滆€� - -璇f瀬锛実ithub ID zonghaishang锛孉pache Dubbo PMC锛岀洰鍓嶅氨鑱屼簬铓傝殎閲戞湇涓棿浠跺洟闃燂紝涓绘敾 RPC 鍜� Service Mesh 鏂瑰悜銆� 銆婃繁鍏ョ悊瑙� Apache Dubbo 涓庡疄鎴樸€嬩竴涔︿綔鑰呫€� diff --git a/doc/md/hessian2/what's-new-in-dubbo-go-hessian2-v1.6.0.md b/doc/md/hessian2/what's-new-in-dubbo-go-hessian2-v1.6.0.md deleted file mode 100644 index 61589e6b64a0c3ebf957403243c9d0b6ec56cce1..0000000000000000000000000000000000000000 --- a/doc/md/hessian2/what's-new-in-dubbo-go-hessian2-v1.6.0.md +++ /dev/null @@ -1,64 +0,0 @@ -# [What's new in Dubbo-go-hessian2 v1.6.0](https://my.oschina.net/dubbogo/blog/4318016) - -鍙戠増浜猴細[鏈涘摜](https://github.com/wongoo) - -## 1\. 澧炲姞缂撳瓨浼樺寲 - -dubbo-go-hessian2 鍦ㄨВ鏋愭暟鎹殑鏁版嵁澶ч噺浣跨敤鍒颁簡 struct 鐨勭粨鏋勪俊鎭紝杩欓儴鍒嗕俊鎭彲浠ョ紦瀛樿捣鏉ュ弽澶嶅埄鐢紝浣垮緱鎬ц兘鎻愬崌浜嗕竴鍊嶃€備紭鍖栬繃绋嬭褰曞彲浠ヨ缁嗛槄璇籟銆婅涓€娆″ dubbo-go-hessian2 鐨勬€ц兘浼樺寲銆媇(https://mp.weixin.qq.com/s/ouVxldQAt0_4BET7srjJ6Q). - -瀵瑰簲 pr [#179](https://github.com/apache/dubbo-go-hessian2/pull/179)锛屼綔鑰� [micln](https://github.com/micln)銆� - -## 2\. string 瑙f瀽鎬ц兘浼樺寲 - -鐢变簬 hessian 锛� dubbo 搴忓垪鍖栧崗璁紝涓嬬О锛歨essian 锛夊 string 鐨勫畾涔夋槸16 bit 鐨� unicode 鐨� UTF-8 琛ㄧず褰㈠紡锛屽瓧绗﹂暱搴﹁〃绀烘槸16 bit 鐨勫瓧绗︽暟銆傝繖鏄粎閽堝 java 鍒跺畾鐨勮鑼冿紝java 涓竴涓瓧绗︽槸16 bit锛屽搴斿埌 UTF-16. hessian 搴撲篃鏄姣忎竴涓瓧绗﹁繘琛岃浆鐮佸簭鍒楀寲銆備絾 golang 閲岄潰瀛楃鏄拰 UTF-8 瀵瑰簲鐨勶紝dubbo-go-hessian2 閲岄潰鐨� rune 鏄� 32bit锛屽拰 unicode涓€涓€鏄犲皠銆傚浜� U+10000 ~ U+10FFFF 鐨勫瓧绗︼紝闇€鎸夌収 UTF16 鐨勮鑼冿紝灏嗗瓧绗﹁浆鎹负 2 涓瓧鑺傜殑浠g悊瀛楃锛屽啀鍋氳浆鎹紝鎵嶈兘鍜� java 鐨勫簭鍒楀寲鏂瑰紡瀵瑰簲璧锋潵銆� - -鍘熸潵涓嶇鏄紪鐮佽繕鏄В鏋愰兘鏄竴涓瓧绗︿竴涓瓧绗﹀鐞嗭紝鐗瑰埆鏄В鏋愮殑鏃跺€欙紝浠庢祦閲岄潰涓€涓瓧鑺備竴涓瓧鑺傝鍙栧苟缁勮鎴� rune锛岀劧鍚庡啀杞崲涓� string锛岃繖鏍锋晥鐜囩壒鍒綆銆傛垜浠殑浼樺寲鏂规鏄紝鎵规璇诲彇瀛楄妭娴佸埌 buffer 涓紝瀵� buffer 杩涜瑙f瀽杞负 UTF-8 鏁扮粍锛屽苟缁熻瀛楃鏁伴噺銆傚叾涓渶瑕佸浠g悊瀵瑰瓧绗﹀皢鍏惰浆鎹负鏍囧噯 UTF-8 瀛愯妭鏁扮粍銆傚鏋滅粺璁$殑瀛楃鏁伴噺涓嶈冻锛屽啀杩涗竴姝ヨ鍙栨祦绉嶇殑鏁版嵁杩涜瑙f瀽銆傞€氳繃姝ゆ柟寮忔彁鍗囦竴鍊嶇殑瑙f瀽鏁堢巼銆� - -瀵瑰簲 pr [#188](https://github.com/apache/dubbo-go-hessian2/pull/188)锛屼綔鑰� [zonghaishang](https://github.com/zonghaishang)銆� - -## 3\. 瑙f瀽蹇界暐涓嶅瓨鍦ㄧ殑瀛楁 - -hessian 搴撳湪瑙f瀽鏁版嵁鐨勬椂鍊欙紝瀵逛簬涓€涓� class 瀛楁锛屽鏋滀笉瀛樺湪锛屽垯鐩存帴蹇界暐鎺夈€備絾 v1.6.0 鐗堟湰涔嬪墠 dubbo-go-hessian2 瑙f瀽鏁版嵁锛屽鏋滈亣鍒颁笉瀛樺湪鐨勫瓧娈碉紝浼氳繑鍥� error銆備粠 v1.6.0 寮€濮嬶紝涓� hessian 涓€鏍凤紝蹇界暐涓嶅瓨鍦ㄧ殑瀛楁銆�**鍥犱负杩欐槸涓€涓壒鎬х殑鍙樻洿锛屾墍浠ュ崌绾х殑鍚屽涓€瀹氳娉ㄦ剰浜嗐€�** - -瀵瑰簲 pr [#201](https://github.com/apache/dubbo-go-hessian2/pull/201)锛屼綔鑰� [micln](https://github.com/micln) & [fangyincheng](https://github.com/fangyincheng)銆� - -## 4\. 瑙e喅娴偣鏁扮簿搴︿涪澶遍棶棰� - -鍦ㄥ float32 绫诲瀷杩涜搴忓垪鍖栨椂锛屾垜浠竴寰嬪己鍒惰浆鎹负 float64 鍐嶈繘琛屽簭鍒楀寲鎿嶄綔銆傜敱浜庢诞鐐规暟鐨勭簿搴﹂棶棰橈紝鍦ㄨ繖涓浆鎹㈣繃绋嬩腑鍙兘鍑虹幇灏忔暟鐐瑰悗鍑虹幇澶氫綑鐨勫熬鏁帮紝渚嬪 (float32)99.8-->(float64)99.80000305175781銆� - -1.6.0 鐗堟湰瀵� float32 鐨勫簭鍒楀寲杩涜浜嗕紭鍖栵細 - -* 濡傛灉灏忔暟灏炬暟灏忎簬 3 浣嶏紝鏍规嵁 hessian2 鍗忚搴忓垪鍖栦负 double 32-bit 鏍煎紡 -* 鍚﹀垯鍏堣浆鎹负 string 绫诲瀷锛屽啀杞崲涓� float64 绫诲瀷锛岃繖鏍峰仛鍙互閬垮厤鐢变簬娴偣鏁扮簿搴﹂棶棰樹骇鐢熷浣欑殑灏炬暟锛屾渶鍚庡 float64 杩涜搴忓垪鍖栥€� - -铏界劧瀵� float32 绫诲瀷杩涜浜嗕紭鍖栵紝浣嗘槸渚濈劧寤鸿浣跨敤娴偣鏁扮殑鏃跺€欎紭鍏堜娇鐢� float64 绫诲瀷銆� - -瀵瑰簲 pr [#196](https://github.com/apache/dubbo-go-hessian2/pull/196)锛屼綔鑰� [willson-chen](https://github.com/willson-chen)銆� - -## 5\. 瑙e喅 attachment 绌哄€间涪澶遍棶棰� - -dubbo 璇锋眰涓寘鍚� attachment 淇℃伅锛屼箣鍓嶅鏋� attachment 閲岄潰鍚湁濡� `"key1":""`锛岃繖绉� value 涓虹┖鐨勬儏鍐碉紝瑙f瀽鍑烘潵鐨勭粨鏋滀細鐩存帴涓㈠け杩欎釜灞炴€� key1 锛寁1.6.0 淇浜嗘闂锛岀幇鍦ㄨВ鏋愬嚭鏉ョ殑 attachment 浼氭纭В鏋愬嚭绌� value 鐨勫睘鎬с€� - -瀵瑰簲 pr [#191](https://github.com/apache/dubbo-go-hessian2/pull/191)锛屼綔鑰� [champly](https://github.com/champly)銆� - -## 6\. 鏀寔 鈥樼户鎵库€� 鍜屽拷鐣ュ啑浣欏瓧娈� - -鐢变簬 go 娌℃湁缁ф壙鐨勬蹇碉紝鎵€浠ュ湪涔嬪墠鐨勭増鏈紝Java 鐖剁被鐨勫瓧娈典笉琚� dubbo-go-hessian2 鎵€鏀寔銆傛柊鐗堟湰涓紝dubbo-go-hessian2 灏咼ava鏉ヨ嚜鐖剁被鐨勫瓧娈电敤鍖垮悕缁撴瀯浣撳搴旓紝濡傦細 - -```rust -type Dog struct { - Animal - Gender string - DogName string `hessian:"-"` -} -``` - -鍚屾椂锛屽氨鍍� json 缂栫爜涓€氳繃 immediately 鍙互鍦ㄥ簭鍒楀寲涓拷鐣ヨ瀛楁锛屽悓鐞嗭紝閫氳繃 hessian:"-" 鐢ㄦ埛涔熷彲浠ヨ鍐椾綑瀛楁涓嶅弬涓� hessian 搴忓垪鍖栥€� - -瀵瑰簲pr [#154](https://github.com/apache/dubbo-go-hessian2/pull/154)锛屼綔鑰� [micln](https://github.com/micln) - -## 娆㈣繋鍔犲叆 dubbo-go 绀惧尯 - -閽夐拤缇�: **23331795** - -[github](https://www.oschina.net/p/github)[apache](https://www.oschina.net/p/apache+http+server)[java](https://www.oschina.net/p/java) \ No newline at end of file diff --git a/doc/md/hessian2/what's-new-in-dubbo-go-hessian2-v1.7.0.md b/doc/md/hessian2/what's-new-in-dubbo-go-hessian2-v1.7.0.md deleted file mode 100644 index 5e8ce0bb47d0b98c37c6b5367f207dcc8c6862f3..0000000000000000000000000000000000000000 --- a/doc/md/hessian2/what's-new-in-dubbo-go-hessian2-v1.7.0.md +++ /dev/null @@ -1,268 +0,0 @@ -# [Dubbo-go-hessian2 v1.7.0 鍙戝竷](https://www.oschina.net/news/118648/dubbogo-hessian2-1-7-0-released) - -Dubbo-go-hessian2 v1.7.0宸插彂甯冿紝璇﹁聽[https://github.com/apache/dubbo-go-hessian2/releases/tag/v1.7.0锛宂(https://github.com/apache/dubbo-go-hessian2/releases/tag/v1.7.0%EF%BC%8C)聽浠ヤ笅瀵硅繖娆℃洿鏂板唴瀹硅繘琛岃缁嗘暣鐞嗐€� - -鍙﹀v1.6.3 灏� attachment 绫诲瀷鐢� map\[string\]stiring 鏀逛负map\[string\]interface{} 瀵艰嚧鐗堟湰涓嶅吋瀹归棶棰橈紝杩欓儴鍒嗗凡杩樺師锛屽悗缁殑璁″垝鏄皢dubbo鍗忚鐨剅equest/response瀵硅薄鏁翠綋杩佺Щ鍒癲ubbogo椤圭洰涓繘琛岃凯浠d慨鏀癸紝 hessian2涓皢涓嶅啀鏀瑰姩鍒皉equest/response瀵硅薄銆� - -## 1\. New Features - -### 1.1 add GetStackTrace method into Throwabler and its implements.聽[#207](https://github.com/apache/dubbo-go-hessian2/pull/207) - -> contributed by聽[https://github.com/cvictory](https://github.com/cvictory) - -go璇█client璇锋眰java璇█鏈嶅姟鏃讹紝濡傛灉java璇█鎶涘嚭浜嗗紓甯革紝寮傚父瀵瑰簲鐨勫爢鏍堜俊鎭槸琚繚瀛樺湪StackTraceElement涓€� - -杩欎釜寮傚父淇℃伅鍦ㄦ棩蹇椾腑鏈€濂借兘琚墦鍗板嚭鏉ワ紝浠ユ柟渚垮鎴风鎺掓煡闂锛屾墍浠ュ湪Throwabler鍜屽搴斿瓙绫讳腑澧炲姞浜哠tackTraceElement鐨勮幏鍙栥€� - -娉細鍏跺疄杩樻湁涓€绉嶆洿濂界殑鏂规硶锛屾墍鏈夌殑鍏蜂綋鐨勫紓甯哥被鍨嬮兘鍖呭惈java\_exception/exception.go鐨凾hrowable struct銆傝繖鏍峰彧闇€瑕佸湪Throwable涓鍔燝etStackTrace鏂规硶灏卞彲浠ヤ簡銆備絾鏄繖绉嶆柟寮忛渶瑕佹洿澶氱殑娴嬭瘯楠岃瘉锛屾敼鍔ㄧ殑閫昏緫鐩稿浼氬鏉備竴浜涖€備絾鏄唬鐮佷細鏇存暣娲併€� 杩欓噷鍏堜笉鐢ㄨ繖绉嶆柟娉曘€� - -### 1.2 catch user defined exceptions.聽[#208](https://github.com/apache/dubbo-go-hessian2/pull/208) - -> contributed by聽[https://github.com/cvictory](https://github.com/cvictory) - -golang涓鍔犱竴涓猨ava涓璄xception瀵硅薄鐨勫簭鍒楀寲杈撳嚭鏂规硶锛� - -```css -func JavaException() []byte { - e := hessian.NewEncoder() - exception := java_exception.NewException("java_exception") - e.Encode(exception) - return e.Buffer() -} -``` - -鍦╫utput/output.go 鎻愪緵璋冪敤鍏ュ彛:娣诲姞濡備笅鍑芥暟鍒濆鍖栧0鏄� - -```plain -func init() { - funcMap["JavaException"] = testfuncs.JavaException -} -``` - -java浠g爜涓鍔犺皟鐢╣o鏂规硶搴忓垪鍖栫粨鏋�:聽**璇存槑**: Assert.assertEquals 涓嶈兘鐩存帴姣旇緝Exception瀵硅薄鏄惁鐩哥瓑 - -```php - /** - * test java java.lang.Exception object and go java_exception Exception struct - */ - @Test - public void testException() { - Exception exception = new Exception("java_exception"); - Object javaException = GoTestUtil.readGoObject("JavaException"); - if (javaException instanceof Exception) { - Assert.assertEquals(exception.getMessage(), ((Exception) javaException).getMessage()); - } - } -``` - -### 1.3 support java8 time object.聽[#212](https://github.com/apache/dubbo-go-hessian2/pull/212),聽[#221](https://github.com/apache/dubbo-go-hessian2/pull/221) - -> contributed by聽[https://github.com/willson-chen](https://github.com/willson-chen),聽[https://github.com/cyb-code](https://github.com/cyb-code) - -golang涓鍔犱竴涓猨ava8瀵硅薄鐨勫簭鍒楀寲杈撳嚭鏂规硶锛� - -```go -// test java8 java.time.Year -func Java8TimeYear() []byte { - e := hessian.NewEncoder() - year := java8_time.Year{Year: 2020} - e.Encode(year) - return e.Buffer() -} - -// test java8 java.time.LocalDate -func Java8LocalDate() []byte { - e := hessian.NewEncoder() - date := java8_time.LocalDate{Year: 2020, Month: 9, Day: 12} - e.Encode(date) - return e.Buffer() -} -``` - -鍦╫utput/output.go 鎻愪緵璋冪敤鍏ュ彛:娣诲姞鍑芥暟鍒濆鍖栧0鏄� - -```plain -func init() { - funcMap["Java8TimeYear"] = testfuncs.Java8TimeYear - funcMap["Java8LocalDate"] = testfuncs.Java8LocalDate -} -``` - -java浠g爜涓鍔犺皟鐢╣o鏂规硶搴忓垪鍖栫粨鏋�: - -```java -/** - * test java8 java.time.* object and go java8_time/* struct - */ -@Test -public void testJava8Year() { - Year year = Year.of(2020); - Assert.assertEquals(year - , GoTestUtil.readGoObject("Java8TimeYear")); - LocalDate localDate = LocalDate.of(2020, 9, 12); - Assert.assertEquals(localDate, GoTestUtil.readGoObject("Java8LocalDate")); -} -``` - -### 1.4 support test golang encoding data in java.聽[#213](https://github.com/apache/dubbo-go-hessian2/pull/213) - -> contributed by聽[https://github.com/wongoo](https://github.com/wongoo) - -涓轰簡鏇村ソ鐨勬祴璇曢獙璇乭essian搴擄紝鍘熸潵宸茬粡鏀寔鍦╣olang涓祴璇昷ava鐨勫簭鍒楀寲鏁版嵁锛岀幇鍦ㄥ鍔犲湪java涓祴璇昰olang鐨勫簭鍒楀寲鏁版嵁锛屽疄鐜板弻鍚戞祴璇曢獙璇併€� - -golang涓鍔犲簭鍒楀寲杈撳嚭鏂规硶: - -```css -func HelloWorldString() []byte { - e := hessian.NewEncoder() - e.Encode("hello world") - return e.Buffer() -} -``` - -灏嗚鏂规硶娉ㄥ唽鍒皁utput/output.go涓� - -```plain - // add all output func here - func init() { - funcMap["HelloWorldString"] = testfuncs.HelloWorldString -} -``` - -output/output.go 鎻愪緵璋冪敤鍏ュ彛: - -```go -func main() { - flag.Parse() - - if *funcName == "" { - _, _ = fmt.Fprintln(os.Stderr, "func name required") - os.Exit(1) - } - f, exist := funcMap[*funcName] - if !exist { - _, _ = fmt.Fprintln(os.Stderr, "func name not exist: ", *funcName) - os.Exit(1) - } - - defer func() { - if err := recover(); err != nil { - _, _ = fmt.Fprintln(os.Stderr, "error: ", err) - os.Exit(1) - } - }() - if _, err := os.Stdout.Write(f()); err != nil { - _, _ = fmt.Fprintln(os.Stderr, "call error: ", err) - os.Exit(1) - } - os.Exit(0) -} -``` - -java浠g爜涓鍔犺皟鐢╣o鏂规硶搴忓垪鍖栫粨鏋�: - -```plain -public class GoTestUtil { - - public static Object readGoObject(String func) { - System.out.println("read go data: " + func); - try { - Process process = Runtime.getRuntime() - .exec("go run output/output.go -func_name=" + func, - null, - new File("..")); - - int exitValue = process.waitFor(); - if (exitValue != 0) { - Assert.fail(readString(process.getErrorStream())); - return null; - } - - InputStream is = process.getInputStream(); - Hessian2Input input = new Hessian2Input(is); - return input.readObject(); - } catch (Exception e) { - e.printStackTrace(); - return null; - } - } - - private static String readString(InputStream in) throws IOException { - StringBuilder out = new StringBuilder(); - InputStreamReader reader = new InputStreamReader(in, StandardCharsets.UTF_8); - char[] buffer = new char[4096]; - - int bytesRead; - while ((bytesRead = reader.read(buffer)) != -1) { - out.append(buffer, 0, bytesRead); - } - - return out.toString(); - } -} -``` - -澧炲姞java娴嬭瘯浠g爜: - -```java -@Test -public void testHelloWordString() { - Assert.assertEquals("hello world" - , GoTestUtil.readGoObject("HelloWorldString")); -} -``` - -### 1.5 support java.sql.Time & java.sql.Date.聽[#219](https://github.com/apache/dubbo-go-hessian2/pull/219) - -> contributed by聽[https://github.com/zhangshen023](https://github.com/zhangshen023) - -澧炲姞浜� java 绫� java.sql.Time, java.sql.Date 鏀寔锛屽垎鍒搴斿埌hessian.Time 鍜� hessian.Date锛� 璇﹁聽[https://github.com/apache/dubbo-go-hessian2/pull/219/files銆俔(https://github.com/apache/dubbo-go-hessian2/pull/219/files%E3%80%82) - -## 2\. Enhancement - -### 2.1 Export function EncNull.聽[#225](https://github.com/apache/dubbo-go-hessian2/pull/225) - -> contributed by聽[https://github.com/cvictory](https://github.com/cvictory) - -寮€鏀� hessian.EncNull 鏂规硶锛屼互渚跨敤鎴风壒瀹氭儏鍐典笅浣跨敤銆� - -## 3\. Bugfixes - -### 3.1 fix enum encode error in request.聽[#203](https://github.com/apache/dubbo-go-hessian2/pull/203) - -> contributed by聽[https://github.com/pantianying](https://github.com/pantianying) - -鍘熸潵鍦� dubbo request 瀵硅薄涓病鏈夊垽鏂� enum 绫诲瀷鐨勬儏鍐碉紝姝r澧炲姞浜嗗垽鏂槸涓嶆槸POJOEnum绫诲瀷銆傝瑙伮燵https://github.com/apache/dubbo-go-hessian2/pull/203/files](https://github.com/apache/dubbo-go-hessian2/pull/203/files) - -### 3.2 fix \[\]byte field decoding issue.聽[#216](https://github.com/apache/dubbo-go-hessian2/pull/216) - -> contributed by聽[https://github.com/wongoo](https://github.com/wongoo) - -v1.7.0 涔嬪墠濡傛灉 struct涓寘鍚玕[\]byte瀛楁鏃舵棤娉曞弽搴忓垪鍖�, 鎶ラ敊鈥渆rror list tag: 0x29鈥濓紝涓昏鍘熷洜鏄褰撳仛list杩涜澶勭悊锛屽浜庤繖绉嶆儏鍐靛簲璇ユ寜鐓inary鏁版嵁杩涜澶勭悊鍗冲彲銆� - -```go -type Circular struct { - Num int - Previous *Circular - Next *Circular - ResponseDataBytes []byte // <---- -} - -func (Circular) JavaClassName() string { - return "com.company.Circular" -} -``` - -### 3.3 fix decoding error for map in map.聽[#229](https://github.com/apache/dubbo-go-hessian2/pull/229) - -> contributed by聽[https://github.com/wongoo](https://github.com/wongoo) - -v1.7.0 涔嬪墠宓屽map鏃犳硶姝g‘瑙f瀽锛屼富瑕佸師鍥犳槸瀵瑰簲鐨刴ap瀵硅薄琚綋鍋氫竴涓暟鎹被鍨嬪嵈鏈鑷姩鍔犲埌绫诲紩鐢ㄥ垪琛ㄤ腑锛岃€屽祵濂梞ap绫讳俊鎭槸鍚屼竴绫诲瀷鐨勫紩鐢紝鍘荤被寮曠敤鍒楄〃鎵撅紝鎵句笉鍒板氨鎶ラ敊浜嗐€� 瑙e喅杩欎釜闂鐨勬柟娉曞氨鏄亣鍒癿ap绫诲璞★紝涔熷皢鍏跺姞鍏ュ埌绫诲紩鐢ㄥ垪琛ㄤ腑鍗冲彲銆� 闂璇︾粏鍙傝€兟燵#119](https://github.com/apache/dubbo-go-hessian2/issues/119). - -### 3.4 fix fields name mismatch in Duration class.聽[#234](https://github.com/apache/dubbo-go-hessian2/pull/234) - -> contributed by聽[https://github.com/skyao](https://github.com/skyao) - -杩欎釜 PR 瑙e喅浜咲uration瀵硅薄涓瓧娈甸敊璇畾涔夛紝鍘熸潵鏄�"second/nano"锛� 搴旇鏄�"seconds/nanos"銆� - -鍚屾椂鏀瑰杽浜嗘祴璇曢獙璇佹暟鎹€備箣鍓嶄娇鐢�0浣滀负int瀛楁鐨勬祴璇曟暟鎹紝杩欐槸涓嶅噯纭殑锛屽洜涓篿nt绫诲瀷榛樿鍊煎氨鏄�0. \ No newline at end of file diff --git a/doc/md/interview/dubbo-go-published.md b/doc/md/interview/dubbo-go-published.md deleted file mode 100644 index cb2848dee732fafe1141b3a3064f1da8d9b662be..0000000000000000000000000000000000000000 --- a/doc/md/interview/dubbo-go-published.md +++ /dev/null @@ -1,157 +0,0 @@ -# [鍐蹭笂浜戝師鐢燂紝Dubbo 鍙戝竷 Go 鐗堟湰](https://www.oschina.net/question/3820517_2306822) - -[h4cd](https://my.oschina.net/u/3820517) 鍙戝竷浜� 2019/06/02 22:36 - -5 鏈� 21 鏃ワ紝缁忚繃涓€骞村鐨勫鍖栵紝Apache Dubbo 浠� Apache 杞欢鍩洪噾浼氭瘯涓氾紝鎴愪负 Apache 椤剁骇椤圭洰銆� - - - -Dubbo 鏄樋閲屼簬 2011 骞村紑婧愮殑涓€娆鹃珮鎬ц兘 RPC 妗嗘灦锛屽湪 Java 鐢熸€佷腑鍏锋湁涓嶅皬鐨勫奖鍝嶅姏銆傚綋鍒濈粡鍘嗚繃涓€娈佃澶栫晫璇熺梾鐨勨€滃仠姝㈢淮鎶も€濈伆鏆楁椂鍏夛紝鍚庢潵鍦� 2017 骞� Dubbo 娴瓙鍥炲ご锛屽畼鏂瑰甯冮噸鏂伴噸鐐圭淮鎶ゃ€� - -閲嶆柊鍚埅鐨� Dubbo 灏嗛瑕佺洰鏍囧畾浣嶄簬閲嶆柊婵€娲荤ぞ鍖猴紝璧㈠洖寮€鍙戣€呯殑淇′换锛屽苟涓旈€愭笎灏� Dubbo 鎵撻€犳垚涓€涓浗闄呭寲涓庣幇浠e寲鐨勯」鐩紝鐩墠璺濈瀹e竷閲嶅惎宸茬粡杩囦簡涓€骞村崐鐨勬椂闂淬€� - -鍦ㄨ繖涓繃绋嬩腑锛孌ubbo 鍙戝竷浜嗗涓増鏈紝骞堕€愭笎浠庝竴涓� RPC 妗嗘灦鍚戝井鏈嶅姟鐢熸€佺郴缁熻浆鍙橈紝18 骞村勾鍒� Dubbo 鍏ラ┗ Apache 杞欢鍩洪噾浼氬鍖栧櫒锛屽紑濮嬩互 Apache 涔嬮亾鍙戝睍绀惧尯銆� - -涓€骞翠箣鍚庯紝Dubbo 鍦� Apache 瀛靛寲鍣ㄤ腑鍙戝竷浜嗛噸鍚淮鎶や互鏉ョ殑棣栦釜閲岀▼纰戠増鏈� 2.7.0锛屾坊鍔犱簡绀惧尯鍛煎0寰堥珮鐨勫紓姝ュ寲鏀寔锛屼互鍙婃敞鍐屼腑蹇冧笌閰嶇疆涓績鍒嗙绛夌壒鎬с€� - -杩欐湡闂� Dubbo 3.0 鐨勫紑鍙戝伐浣滀篃琚彁涓婁簡鏃ョ▼锛屼粖骞� 4 鏈堜腑鏃紝瀹樻柟姝e紡鍏竷浜� Dubbo 3.0 鐨勮繘搴︼紝姝ょ増鏈柊鐗规€у寘鎷敮鎸� Filter 閾剧殑寮傛鍖栥€佸搷搴斿紡缂栫▼銆佷簯鍘熺敓/Service Mesh 鏂瑰悜鐨勬帰绱紝浠ュ強涓庨樋閲屽唴澶栬瀺鍚堛€� - -鐒跺悗锛孌ubbo 姣曚笟浜嗐€�**姣曚笟鍚庣殑 Dubbo 杩戞湡鏈変粈涔堟秷鎭憿锛�**鐢熸€佽繕鍦ㄥ彂灞曪紝Dubbo 绀惧尯鍦ㄥ墠鍑犳棩鍏紑浜� [Dubbo Roadmap 2019](https://github.com/dubbo/awesome-dubbo/blob/master/slides/meetup/201905@beijing/DUBBO%20ROADMAP%202019.pdf)锛岃鍒掑湪 2020 骞� 2 鏈堜唤鍙戝竷 Dubbo 3.0 姝e紡鐗堬紝鎰熷叴瓒g殑鍚屽鍙互璇︾粏鏌ラ槄銆� - - - -鑰屾渶杩戝畼鏂瑰張**瀹e竷 Go 璇█鍔犲叆聽Dubbo 鐢熸€�**锛屽彂甯冧簡 [dubbo-go聽椤圭洰](https://github.com/dubbo/go-for-apache-dubbo)銆� - - - -鍦ㄦ涔嬪墠 Dubbo 鐨�**璺ㄨ瑷€鍙墿灞曟€�**宸茬粡鏈変竴浜涘疄鐜帮紝鏀寔鐨勮瑷€鍖呮嫭 PHP銆丯ode.js 涓� Python锛屽悓鏃朵篃鍩轰簬鏍囧噯 Java REST API - JAX-RS 2.0 瀹炵幇浜� REST 鐨勮皟鐢ㄦ敮鎸侊紝鍏蜂綋鎯呭喌濡備笅锛� - -* **PHP**锛歱hp-for-apache-dubbo锛宐y 涔愪俊锛屾彁渚涘鎴风鍜屾湇鍔$ -* **Node.js**锛歞ubbo2.js锛宐y聽鍗冪背缃戯紝鎻愪緵瀹㈡埛绔� -* **Node.js**锛歟gg-dubbo-rpc锛宐y聽铓傝殎閲戞湇 egg 鍥㈤槦锛屾彁渚涘鎴风鍜屾湇鍔$ -* **Python** 锛歱y-client-for-apache-dubbo锛宐y聽鍗冪背缃戯紝鎻愪緵瀹㈡埛绔� - -鐜板湪鍔犲叆浜� dubbo-go锛孏o 寮€鍙戣€呬篃缁堜簬鍙互灏濆埌 Dubbo 鐨勬粙鍛充簡銆傛嵁鎮夛紝dubbo-go 椤圭洰灏嗕簬**鏈懆瀹屾垚寰€ Apache 杞欢鍩洪噾浼氱殑杩佺Щ**锛屼綔涓� Apache Dubbo 椤剁骇椤圭洰鐨勫瓙椤圭洰锛屽眾鏃� dubbo-go 椤圭洰鐨勬柊鍦板潃涔熷皢鍙樹负锛歔https://github.com/apache/dubbo-go](https://github.com/apache/dubbo-go)銆� - -鍏充簬椤圭洰鐨勭爺鍙戣儗鏅笌鍏蜂綋鎶€鏈粏鑺傜瓑鐩稿叧鍐呭锛屾垜浠涓€鏃堕棿閲囪浜嗛」鐩叡鍚屽彂璧蜂汉锛岀洰鍓嶅湪鎼虹▼鍩虹涓彴鐮斿彂閮ㄧ殑**浣曢懌閾�**銆� - -**OSCHINA锛�**dubbo-go 鏄粈涔堬紝瀹氫綅鏄粈涔堬紝涓轰粈涔堝仛杩欎釜椤圭洰锛� - -**dubbo-go 浣曢懌閾細** - -**dubbo****\-****go 鏄�** **D****ubbo 鐨勫畬鏁� Go 璇█瀹炵幇銆�** - -鎴戜滑鐭ラ亾 Dubbo 鏈韩鍩轰簬 Java锛屽緢澶氬叕鍙镐篃閮戒互 Java 寮€鍙戜负涓伙紝骞朵笖浣跨敤 Dubbo 浣� RPC 鎴栧井鏈嶅姟寮€鍙戞鏋躲€� - -鑰屾渶杩� Go 璇█鐢熸€佸彂灞曟瘮杈冭繀閫燂紝鍥犲叾璇█浼樺娍锛屾垜浠凡缁忔湁閮ㄩ棬寮€濮嬪皾璇曚娇鐢� Go 寮€鍙戜竴浜涙柊鐨勯」鐩紝灏变細瀛樺湪浜熼渶瑙e喅鐨勯棶棰橈細 - -* 濡備綍瀹炵幇 Go 椤圭洰鍜� Java & Dubbo 椤圭洰鐨勪簰閫氾紵 -* 鍙﹀锛孏o 椤圭洰鏈韩涔熸湁瀵� RPC 涓庡井鏈嶅姟寮€鍙戞鏋剁殑璇夋眰锛屽浣曡В鍐筹紵 - -鍩轰簬杩欎袱涓棶棰橈紝鎴戜滑鎼虹▼鍥㈤槦鍩轰簬 dubbo-go 鐨勬棭鏈熼」鐩紝閲嶆瀯寮€鍙戜簡鏇存槗浜庢墿灞曚笖鍔熻兘鏇村姞瀹屽杽鐨� dubbo-go v1.0.0 鐗堟湰锛屽苟璐$尞鍥炰簡绀惧尯锛屽畠**棣栬鐩殑灏辨槸瑙e喅 Go 椤圭洰涓� Java & Dubbo 椤圭洰鐨勪簰閫氶棶棰橈紝鍚屾椂****涔�****涓� Go 椤圭洰鎻愪緵****浜�****涓€绉� RPC** **涓庡井鏈嶅姟寮€鍙�****妗嗘灦鐨勯€夋嫨**銆� - -dubbo-go 鎻愪緵瀹㈡埛绔笌鏈嶅姟鍣ㄧ锛岀洰鍓� dubbo-go 绀惧尯浣滀负 Dubbo 鐢熸€佹渶娲昏穬鐨勭ぞ鍖轰箣涓€锛屽悗闈㈢殑瀹氫綅闇€瑕侀厤鍚� Dubbo 瀹樻柟鐨勮姹備笌绀惧尯鐢ㄦ埛鐨勯渶姹傘€� - -**OSCHINA锛�**鎴戜滑鐭ラ亾 Dubbo 鍦� Java 鐢熸€佷笂鏄湁闈炲父楂樼殑鎴愬氨鐨勶紝鑰岀洰鍓� Go 鐢熸€佹湰韬篃鏈変竴浜涚煡鍚嶇殑寰湇鍔℃鏋讹紝閭� dubbo-go 涔嬩簬 Go 鐢熸€侊紝鏄惁鏈変笌鍏跺畠妗嗘灦姣旀嫾鐨勮兘鍔涳紵 - -**dubbo-go 浣曢懌閾細** - -鎴戜滑鏈€澶х殑鑳藉姏灏辨槸浣滀负 Dubbo 鐨� Go 璇█鐗堟湰锛屾墦閫氫簡涓ょ璇█涔嬮棿鐨� gap锛�**璁� Dubbo 鏇村姞璐磋繎浜戝師鐢�**锛屼负寮€鍙戣€呬篃鎻愪緵浜嗘渶澶х殑鐏垫椿鎬э紝鏄捐憲闄嶄綆浼佷笟鐜版湁鏈嶅姟涓婁簯鐨勬垚鏈紝璁╀紒涓氬湪浜戝師鐢熸椂浠e浜嗕竴绉嶉€夋嫨銆� - -**OSCHINA锛�**Go 鐨勭壒鎬ф湁娌℃湁鍦� dubbo-go 涓緱鍒扮浉搴旂殑浣撶幇锛燂紙姣斿 Go 鐨勯珮骞跺彂鏄€庝箞浠庡熀浜� Java 鐨� Dubbo 涓敼閫犲埌 dubbo-go 涓殑锛燂級 - -**dubbo****\-****go 浣曢懌閾細** - -鎴戝浜� Go 璇█鐨勮鐭ユ槸锛岄鍏堝涔犳垚鏈瘮杈冨皬锛岀浉姣斾簬 Java 鐨勫涔犳垚鏈紝Go 璇█鏇村鏄撳涔犲拰涓婃墜銆� - -鍏舵 Go 鍦ㄨ瑷€灞傞潰涓婏紝姣斿鍏� CSP 缂栫▼妯″瀷鍦ㄩ珮骞跺彂澶勭悊涓婄殑绠€鍗曢珮鏁堛€佽交閲忕骇鍗忕▼鐨勪紭鍔匡紝鐩告瘮杈冨熀浜� JVM 鐨� Java 绋嬪簭鏉ヨ锛屽熀浜� runtime 鐨� Go 绋嬪簭鐬椂鍚姩鑳藉姏绛夌壒鎬ч兘鍚稿紩鐫€寰堝寮€鍙戣€咃紝杩欓噷灏变笉璇︾粏闃愯堪浜嗐€� - -鏈€鍚庡氨鏄綔涓轰簯鍘熺敓璇█鐨勪紭鍔匡紝闅忕潃 Docker銆乲8s 涓� Istio 绛変紭绉€椤圭洰鐨勫嚭鐜帮紝浜戝師鐢熷簳灞傚熀鏈 Go 璇█缁熶竴浜嗭紝鐩镐俊浼佷笟鍦ㄤ簯鍘熺敓妯″紡涓嬪紑鍙戠殑鏃ュ瓙宸茬粡涓嶈繙浜嗐€傛垜瑙夊緱 Go 璇█鐨勭敓鎬佸簲璇ヤ細瓒婃潵瓒婂ソ锛屼篃浼氭湁瓒婃潵瓒婂鐨勪汉浣跨敤瀹冦€� - -灏嗗熀浜� Java 鐨� Dubbo 寮曞叆鍒� Go 涓紝鍍忓墠杈硅鐨勶紝dubbo-go 甯︽潵鐨勪紭鍔垮氨鏄彲浠ュ揩閫熻瀺鍏ヤ簯鍘熺敓鐨勯鍩熴€傝璇� Go 璇█鐗规€т綋鐜扮殑璇濓紝鍙互鍙傝€冧竴涓� **dubbo****\-****go** **涓�****寮傛缃戠粶 I/O 妯″瀷鐨勮璁★紝杩欓儴鍒嗗皢 Go 璇█杞婚噺绾у崗绋嬬殑浼樺娍浣撶幇浜嗗嚭鏉�**銆� - -杩欓噷涔熻涓€涓� Go 璇█涓嶈冻鐨勫湴鏂癸細 - -* Go 鐩稿 Java 鏉ヨ杩樻槸寰堝勾杞荤殑璇█锛屾病鏈夋ā鏉垮簱鍙敤锛屾墍浠ョぞ鍖哄湪缂栧啓骞剁淮鎶essian 2 鍗忚搴撲笂浠樺嚭浜嗗緢楂樼殑寮€鍙戞垚鏈紱 -* 姣旇捣 Java 鐨� try/catch 閿欒澶勭悊鏂瑰紡锛孏o 鐨� error 澶勭悊鑳藉姏鍋忓急锛� -* 鎬讳綋鐢熸€佽繕鏄笉濡� Java锛屽娌℃湁鍍� Netty 涓€鏍风殑寮烘湁鍔涚綉缁� I/O 搴撱€� - -涓轰粈涔堟彁鍒拌繖涓€鐐瑰憿锛屽洜涓� Dubbo 鑷韩浣跨敤浜� Netty 鍜� Hessian 2 鍗忚瀹樻柟 Java 搴擄紝鑰� dubbo-go 鍦ㄥ紑濮嬪仛鐨勬椂鍊欒繖浜涢兘鏄病鏈夌殑锛岃繖浣垮緱 **dubbo****\-****go** **涓€璺蛋鏉ラ潪甯歌壈杈涳紝浣嗘槸****绀惧尯****鏈€缁堥兘****鍏嬫湇浜嗭紝骞朵笖棰濆璐$尞浜嗗紑婧愮殑 Getty 鍜�** **H****essian2 椤圭洰銆�** - -杩欓噷鐗瑰埆鎰熻阿 dubbo-go 绀惧尯鏃╂湡鐨勭粍缁囪€呬簬闆紝椤圭洰鐨勬棭鏈熺増鏈槸 **2016 骞�**鍦ㄥ叾棰嗗鑳¢暱鍩庡拰鍚屼簨鍒樼晱涓夋敮鎸佷笅寮€鍙戠殑锛屼粬璐$尞鐨� Hessian2 鍜� Getty 椤圭洰锛屼篃涓烘渶鏂扮増鏈殑 dubbo-go 鎵撳ソ浜嗗潥瀹炵殑鍩虹銆� - -**OSCHINA锛�**鍓嶄笉涔� Dubbo 鎵嶅甯冧箣鍚庝細鍦� 3.0 涓己璋� Service Mesh 锛岃繖灏辨槸璇█鏃犲叧鐨勪簡锛岄偅 dubbo-go 杩樻湁蹇呰鍦ㄨ繖鏃跺€欏姞鍏ョ敓鎬佸悧锛� - -**dubbo****\-****go 浣曢懌閾細** - -Service Mesh 纭疄鏄井鏈嶅姟鏈潵鍙戝睍鐨勭殑涓€涓ぇ鏂瑰悜锛屼絾鏄幇闃舵鍦ㄥ浗鍐呭ぇ鍏徃杩樻病鏈夌湅鍒伴潪甯告垚鍔熺殑妗堜緥锛屽緢澶氫腑灏忓叕鍙歌嚜韬井鏈嶅姟杩樻湭鎷嗗垎瀹屾瘯鐢氳嚦浜庤繕鏈紑濮嬶紝鐩墠 dubbo-go 绀惧尯浼樺厛瑙e喅杩欑绫诲瀷浼佷笟寰湇鍔℃妧鏈惤鍦扮幆鑺備腑閬囧埌鐨勯棶棰橈紝涓撴敞浜庤ˉ榻愮浉鍏冲姛鑳姐€佷紭鍖栨暣浣撴€ц兘鍜岃В鍐� bug銆傝嚦浜庢湭鏉ワ紝鎴戠浉淇¢殢鐫€ Dubbo Mesh 鍦� Service Mesh 棰嗗煙鐨勬帰绱紝dubbo-go 鑲畾浼氳窡杩涘苟鎵紨閲嶈瑙掕壊銆� - -**OSCHINA锛�**dubbo-go 涓� Dubbo 鐨勬洿鏂板叧绯绘槸鎬庝箞鏍风殑锛熸槸鍚屾鏇存柊鐗规€ц繕鏄湁鑷繁鐨勪竴浜涘垱鏂帮紵 - -**dubbo****\-****go 浣曢懌閾細** - -鎴戜滑鐜板湪鍙戝竷鐨勬渶鏂扮増鏈槸 v1.0.0锛屾垜浠湪姣忎竴娆� release 鏂扮殑鐗堟湰鍚庯紝閮戒細鏄庣‘璇存槑鍙互鍏煎鐨� Dubbo 鐗堟湰銆傛墍浠ワ紝dubbo-go 闇€瑕佸吋瀹瑰搴� Dubbo 鐗堟湰鍙风殑鍔熻兘锛屼細鍚屾鏇存柊涓€浜� Dubbo 鐗规€с€� - -**OSCHINA锛�**鏂板彂甯冪増鏈甫鏉ヤ粈涔堝€煎緱鍏虫敞鐨勭壒鎬э紵 - -**dubbo****\-****go 浣曢懌閾細** - -褰撳墠鍙戝竷鐨� v1.0.0 鐗堟湰鏀寔鐨勫姛鑳藉涓嬶細 - -* 瑙掕壊锛欳onsumer(鈭�)銆丳rovider(鈭�) -* 浼犺緭鍗忚锛欻TTP(鈭�)銆乀CP(鈭�) -* 搴忓垪鍖栧崗璁細JsonRPC v2(鈭�)銆丠essian v2(鈭�) -* 娉ㄥ唽涓績锛歓ooKeeper(鈭�) -* 闆嗙兢绛栫暐锛欶ailover(鈭�) -* 璐熻浇鍧囪 锛歊andom(鈭�) -* 杩囨护鍣細Echo Health Check(鈭�) -* extension 鎵╁睍鏈哄埗 - -dubbo-go v1.0.0 鐗堟湰锛屼富瑕佺敱鎴戝拰鍚屽湪鎼虹▼鐨勫悓浜媅鏂归摱鍩嶿(https://github.com/fangyincheng)缁存姢锛岀ぞ鍖烘垚鍛榌鍛ㄥ瓙搴哴(https://github.com/u0x01)涓嶽楂樿緵鏍糫(https://github.com/gaoxinge)鍙備笌璐$尞锛岃鐗堟湰**娌跨敤浜�** **D****ubbo 鐨勪唬鐮佸垎灞傝В鑰﹁璁�**銆侱ubbo 2.6.x 鐨勪富瑕佸姛鑳介兘浼氶€愭笎鍦� dubbo-go 涓疄鐜帮紝鍖呮嫭 Dubbo 鍩轰簬 SPI 鐨勪唬鐮佹嫇灞曟満鍒讹紝dubbo-go 涔熸湁瀵瑰簲鐨� extension 鎵╁睍鏈哄埗涓庝箣瀵瑰簲銆� - -鎴戜滑鍦ㄦ湭鏉ュ皢閫愭笎鎺ㄥ嚭鐩墠鍙墿灞曟ā鍧楃殑鏇村瀹炵幇锛屽琛ラ綈鏇村鐨� Loadbalance 璐熻浇鍧囪 銆丆luster Strategy 闆嗙兢绛栫暐瀹炵幇锛堢洰鍓嶈繖浜涗换鍔$敱绀惧尯浼欎即涓诲姩璁ら锛屽笇鏈涙洿澶氱殑 Go 璇█鐖卞ソ鑰呮湅鍙嬪彲浠ュ姞鍏ョぞ鍖鸿础鐚級锛涘張濡備簯鍘熺敓棰嗗煙闈炲父娴佽鐨� k8s锛屾垜浠篃灏嗗悓姝� Dubbo 鐨� roadmap锛岃窡杩� k8s 浣滀负娉ㄥ唽涓績鐨勬敮鎸侊紝鐩墠鐢辩ぞ鍖烘垚鍛榌寮犳捣褰琞(https://github.com/NameHaibinZhang)璐熻矗璺熻繘銆� - -褰撶劧骞垮ぇ寮€鍙戣€呬滑涔熷彲浠ュ杩欎簺妯″潡鎺ュ彛杩涜鏂扮殑瀹炵幇锛岄€氳繃 extension 鎷撳睍锛屼互瀹屾垚鑷繁鐨勭壒娈婇渶姹傝€屾棤闇€淇敼婧愪唬鐮併€傚悓鏃讹紝鎴戜滑闈炲父娆㈣繋寮€鍙戣€呬负绀惧尯璐$尞鏈夌敤鐨勬嫇灞曞疄鐜般€� - -姝ょ増鏈В鍐充簡涓€澶ч噸鐐归棶棰橈細**涓� Dubbo Java 鐗堟湰浜掗€氱殑瑙e喅鏂规銆�**鎴戜滑灏嗚繖閮ㄥ垎鎻愬彇鍑轰簡 [Hessi](https://github.com/dubbogo/hessian2)[a](https://github.com/dubbogo/hessian2)[n2](https://github.com/dubbogo/hessian2) 椤圭洰锛岃椤圭洰婧愯嚜绀惧尯[浜庨洦](https://github.com/AlexStocks)鐨勬棭鏈熻础鐚紝鐜板湪鐢辩ぞ鍖烘垚鍛榌鏈涘摜](https://github.com/wongoo)璐熻矗缁存姢锛孾鍛ㄥ瓙搴哴(https://github.com/u0x01)涓嶽楂樿緵鏍糫(https://github.com/gaoxinge)鍙備笌璐$尞銆傜洰鍓嶈椤圭洰宸茬粡瀹屾垚浜嗗 Java 澶ч儴鍒嗙被鍨嬬殑鍏煎鏀寔銆傚ぇ瀹朵篃鍙互鍗曠嫭灏嗚椤圭洰闆嗘垚鍒拌嚜宸辩殑椤圭洰涓紝瀹冪殑寮€婧愬崗璁槸 Apache-2.0銆� - -鍙﹀涓€涓瘮杈冮噸瑕佺殑灏辨槸 **dubbo****\-****go 鐜板湪浣跨敤鐨� TCP 寮傛缃戠粶 I/O 搴�**锛岃搴撲篃鏄熀浜嶽浜庨洦](https://github.com/AlexStocks)鏃╂湡鍐欑殑 [Getty](https://github.com/dubbogo/getty) 椤圭洰锛岀洰鍓嶇敱绀惧尯鐨刐鏈涘摜](https://github.com/wongoo)涓嶽鏂归摱鍩嶿(https://github.com/fangyincheng)璐熻矗缁存姢锛屽畠鍚屾牱涔熸槸 Apache-2.0 鐨勫紑婧愬崗璁€備笅涓€鐗堟湰鎴戜滑**浼氶拡瀵� dubbo****\-****go 鍜� Getty 鐨勭綉缁� I/O 涓庣嚎绋嬫淳鍙戣繖涓€閮ㄥ垎杩涜杩涗竴姝ヤ紭鍖�****銆�** - -闄ゆ涔嬪锛屾垜浠鍒掍笅涓€姝ユ敮鎸� Dubbo 鐨勫彟澶栧嚑澶ч噸瑕佸姛鑳斤紝濡傦細 - -* routing rule 璺敱瑙勫垯(dubbo v2.6.x) -* dynamic configuration 鍔ㄦ€侀厤缃腑蹇�(dubbo v2.7.x) -* metrics 鎸囨爣涓庣洃鎺�(dubbo v2.7.x)聽 -* trace 閾捐矾鐩戞帶(dubbo ecos)聽 - -**OSCHINA锛�**鐩墠椤圭洰鐨勫簲鐢ㄦ儏鍐靛浣曪紵 - -**dubbo****\-****go 浣曢懌閾細** - -dubbo-go 鐜板湪宸茬粡寮€濮嬭涓€浜涗紒涓氬皾璇曞簲鐢ㄤ簬 Go 璇█搴旂敤铻嶅叆浼佷笟宸叉湁 Java & Dubbo 鎶€鏈爤锛屼互鍙婃惌寤哄叏鏂� Go 璇█鍒嗗竷寮忓簲鐢ㄧ瓑鍦烘櫙銆傛瘮濡備腑閫氬揩閫掑唴閮� Go 璋冪敤 Java Dubbo 鏈嶅姟锛涗綔涓烘惡绋� Go 璇█搴旂敤鐨勬湇鍔℃鏋朵互鍙� Go銆丣ava 搴旂敤浜掗€氥€� - -鍏蜂綋鐨勫簲鐢ㄦ儏鍐靛彲浠ユ煡鐪嬶細 - -* [https://github.com/dubbo/go-for-apache-dubbo/issues/2](https://github.com/dubbo/go-for-apache-dubbo/issues/2) - -**OSCHINA锛�**鎺ヤ笅鏉ョ殑婕旇繘鏂瑰悜鏄€庝箞鏍风殑锛� - -**dubbo****\-****go 浣曢懌閾細** - -鍦� dubbo-go 杩佸線 Apache 杞欢鍩洪噾浼氫綔涓� Apache Dubbo 鐨勫瓙椤圭洰鍚庯紝棣栧厛鏈€閲嶈鐨勬槸**鎬ц兘鐨勮繘涓€姝ヤ紭鍖�**锛岀洰鍓嶆€ц兘涓婅櫧鐒惰兘澶熻揪鍒板簲鐢ㄧ殑鐢熶骇绾у埆瑕佹眰锛屼絾鎴戜滑瑙夊緱杩樻病鏈夊彂鎸ュ嚭 Go 璇█鐨勪紭鍔匡紝杩樻湁姣旇緝澶х殑浼樺寲绌洪棿銆傛瘮濡傚墠杈规彁鍒扮殑 Getty锛屼笅涓€鐗堟湰浼氶拡瀵� dubbo-go 搴旂敤 Getty 鐨勭綉缁� I/O 妯″瀷涓庣嚎绋嬫淳鍙戝仛涓€浜涗紭鍖栥€� - -鍙﹀鍖呭惈涓婇潰鎻愬埌鐨勬垜浠繎鏈熼渶瑕佽ˉ鍏ㄤ竴浜涢噸瑕佸姛鑳斤紝鏈€澶ч檺搴﹀湴鍦�**鍔熻兘瀹屾暣鎬�**涓婅兘澶熻窡 Dubbo 鍏煎銆傚叧浜庢湭鏉� dubbo-go 鐨勫彂灞曪紝涔熶細鍚� Dubbo 2.7.x 鐗堟湰杩欐潯绾夸笂鐨勮矾绾垮浘婕旇繘銆� - -**OSCHINA锛�**璇村埌鎬ц兘锛屽綋鍓嶆€ц兘鎯呭喌鍏蜂綋濡備綍锛� - -**dubbo****\-****go 浣曢懌閾細** - -鎴戜滑鏈夊仛涓€涓� [**dubbo-go-****benchmark**](https://github.com/dubbogo/go-for-apache-dubbo-benchmark) 椤圭洰锛屽湪 CPU 鍨嬪彿涓� Intel(R) Xeon(R) CPU E5-2609 0 @2.40GHz锛孋PU 鏍稿績鏁颁负 4\*8 鐨勭‖浠舵按骞充笅锛屽彂閫� 1k 骞惰繑鍥� 1k 鐨勬暟鎹紝100 骞跺彂鏁帮紝100w 鎬昏姹傛暟锛宷ps 鍙互杈惧埌 1.2 涓囧乏鍙炽€� - -CPU 鎬ц兘鎹㈡垚姣旇緝楂樼殑閰嶇疆濡� Intel Core i9 2.9GHz锛宷ps 鍙互鍒拌揪 2 涓囧乏鍙炽€� - -鎴戜滑鍚庨潰浼氬 Hessian2 搴撳拰 Getty 搴撹繘琛屾寔缁€ц兘浼樺寲锛屼互缁欏箍澶т娇鐢ㄨ€呰妭绾﹁祫婧愩€� - -## **閲囪鍢夊浠嬬粛** - -**浣曢懌閾�**锛屾惡绋嬪熀纭€涓彴鐮斿彂閮ㄦ妧鏈笓瀹讹紝dubbo-go 涓昏浣滆€呫€傜洰鍓嶄笓娉ㄤ簬 Golang & Java銆佷腑鍙版灦鏋勩€佷腑闂翠欢涓庡尯鍧楅摼绛夋妧鏈€� \ No newline at end of file diff --git a/doc/md/interview/what's-new-in -dubbo-go-v1.4.0.md b/doc/md/interview/what's-new-in -dubbo-go-v1.4.0.md deleted file mode 100644 index 67dd72d92b3c929ccdcbb5d948e8c086f8fb1d32..0000000000000000000000000000000000000000 --- a/doc/md/interview/what's-new-in -dubbo-go-v1.4.0.md +++ /dev/null @@ -1,167 +0,0 @@ -# [dubbo-go 1.4.0 鐗堟湰鍙戝竷锛屾敮鎸� K8s 娉ㄥ唽涓績銆乺est 鍗忚](https://blog.csdn.net/weixin_45583158/article/details/105132322) - - -2020-03-26 09:30:00 - -寰楃泭浜庣ぞ鍖烘椿璺冪殑鏀寔锛�2020 骞� 3 鏈� 25 鏃� 鎴戜滑鍙戝竷浜嗕竴涓浜哄叴濂嬬殑鐗堟湰鈥斺€攄ubbo-go v1.4.0銆傞櫎浜嗙户缁敮鎸佸凡鏈夌殑 Dubbo 鐨勪竴浜涚壒鎬у锛� dubbo-go 寮€濮嬩簡涓€浜涜嚜宸辩殑鍒涙柊灏濊瘯銆� - -杩欎釜鐗堟湰锛屾渶澶х殑鎰忎箟鍦ㄤ簬锛屽仛浜嗕竴浜涙敮鎸佷簯鍘熺敓鐨勫噯澶囧伐浣溿€傛瘮濡傝锛岀ぞ鍖哄湪鎺㈣浜嗗緢涔呯殑 k8s 钀藉湴涔嬪悗锛岀粓浜庢嬁鍑烘潵浜嗕娇鐢� k8s 浣滀负娉ㄥ唽涓績鐨勮В鍐虫柟妗堛€� - -鍏舵涓€涓瘮杈冨ぇ鐨勬敼杩涙槸--鎴戜滑鍦ㄥ彲瑙傛祴鎬т笂涔熻繄鍑轰簡閲嶈鐨勪竴姝ャ€傚湪杩欎箣鍓嶏紝dubbo-go鍙彁渚涗簡鏃ュ織杩欎箞涓€涓崟涓€鎵嬫锛屽唴閮ㄧ殑淇℃伅姣旇緝涓嶉€忔槑锛岃繖涓増鏈皢鏈夊緢澶х殑鏀瑰杽銆� - -鏈€鍚庝竴涓护浜哄績鍔ㄧ殑鏀硅繘鏄紝鎴戜滑鏀寔浜� REST 鍗忚銆� - -## 1\. K8s 娉ㄥ唽涓績 - -dubbo-go 娉ㄥ唽涓績鐨勬湰璐ㄤ负K/V鍨嬬殑鏁版嵁瀛樺偍銆傚綋鍓嶇増鏈疄鐜颁簡浠� Endpoint 涓虹淮搴﹀湪 k8s API Server 杩涜鏈嶅姟娉ㄥ唽鍜屽彂鐜扮殑鏂规銆愪笅鏂囩畝绉� Endpoint 鏂规銆戯紝鏋舵瀯鍥惧涓嬨€� - - - -Endpoint 鏂规锛岄鍏堝皢姣忎釜 dubbo-go 杩涚▼鑷韩鏈嶅姟淇℃伅搴忓垪鍖栧悗锛岄€氳繃 Kubernetes 鎻愪緵鐨� Patch 鐨勬帴鍙e啓鍏ュ湪鑷韩 Pod 瀵硅薄鐨� Annotation 涓€傚叾娆★紝閫氳繃 Kubernetes 鐨� Watch 鎺ュ彛瑙傚療闆嗙兢涓湰 Namespace 鍐呭甫鏈夋煇浜涘浐瀹歭able \[瑙佷笂鍥綷] Pod 鐨凙nnotation 淇℃伅鐨勬洿鏂帮紝澶勭悊鏈嶅姟鍋ュ悍妫€鏌ャ€佹湇鍔′笂涓嬬嚎绛夋儏鍐靛苟瀹炴椂鏇存柊鏈湴缂撳瓨銆傛暣浣撴祦绋嬩粎浣跨敤 Kubernetes 鍘熺敓 API 瀹屾垚灏� Kubernetes 浣滀负娉ㄥ唽涓績鐨勫姛鑳界壒鎬с€� - -杩欎釜鏂规闈炲父绠€娲侊紝涓嶉渶瑕佸疄鐜伴澶栫殑绗笁鏂规ā鍧楋紝涔熶笉闇€瑕佸 Dubbo 涓氬姟浣滃嚭鏀瑰姩锛屼粎浠呮妸 k8s 褰撳仛閮ㄧ讲骞冲彴锛屼緷璧栧叾瀹瑰櫒绠$悊鑳藉姏锛屾病鏈変娇鐢ㄥ叾 label selector 鍜� service 绛夋湇鍔℃不鐞嗙壒鎬с€傚鏋滅珯鍦� k8s Operator 鐨勮搴︽潵鐪嬶紝Operator 鏂规鐨勪紭鐐瑰嵆 Endpoint 鏂规鐨勭己鐐癸紝Endpoint 鏂规鏃犳硶浣跨敤 k8s 鐨勫仴搴锋鏌ヨ兘鍔涳紝浜︽病鏈変娇鐢� k8s service 鐨勪簨浠剁洃鍚兘鍔涳紝姣忎釜 consumer 鍐椾綑鐩戝惉涓€浜涗笉蹇呰鐩戝惉鐨勪簨浠讹紝褰� Endpoint 杩囧鏃朵細鍔犲ぇ API Server 鐨勭綉缁滃帇鍔涖€� - -鐩墠 dubbo-go 绀惧尯鍏跺疄宸茬粡鏈変簡 operator 鐗堟湰娉ㄥ唽涓績鐨勬妧鏈柟妗堬紝聽鍚庣画鐗堟湰銆愯鍒掔増鏈槸 v1.6銆戠殑 dubbo-go 浼氱粰鍑哄叾瀹炵幇銆傜浉姣斿綋鍓嶅疄鐜帮紝operator 鏂规寮€鍙戝拰绾夸笂缁存姢鎴愭湰褰撶劧涓婂崌寰堝銆備簩鑰呭鍚岀‖甯佺殑涓ら潰锛岀ぞ鍖轰細璁╀袱绉嶆柟寮忎細鍏卞瓨锛屼互婊¤冻涓嶅悓 level 鐨勪娇鐢ㄨ€呫€� - -娉ㄦ剰: 鍥� Pod 琚皟搴﹁€� IP 鍙戠敓鍙樺寲鏃讹紝褰撳墠鐗堟湰鐨� configuration 浠ュ強 router config 妯″潡鏆傛椂鏃犳硶鍔ㄦ€佹洿鏂般€傝繖鏈夊緟浜庢垜浠繘涓€姝ヨВ鍐炽€� - -鍙傝€冭寖渚媆[1\]. - -## 2\. tracing 鍜� metric - -鍙娴嬫€ф槸寰湇鍔¢噸瑕佺殑涓€鐜紝涔熸槸鎴戜滑1.4鐗堟湰鐫€鍔涙敮鎸佺殑閮ㄥ垎銆傚湪1.4鐗堟湰涓紝鎴戜滑涓昏鍦� tracing 鍜� metric 涓や釜鏂瑰悜鎻愪緵浜嗘敮鎸併€� - -涓轰簡鏀寔 tracing 鍜� metric锛屽叧閿殑涓€鐐规槸鏀寔context鍦ㄦ暣涓皟鐢ㄨ繃绋嬩腑浼犻€掋€備负姝ゆ垜浠В鍐充簡context璺ㄧ浼犻€掔殑闂銆傜洰鍓嶇敤鎴峰彲浠ュ湪鎺ュ彛涓0鏄� context 骞朵笖璁剧疆鍊硷紝dubbo-go 鍦ㄥ簳灞傚畬鎴� context 鍐呭浠� client 浼犻€掑埌 server 鐨勪换鍔°€� - - - -鍦� metric 鏂归潰锛宒ubbo-go 寮€濮嬫敮鎸� Prometheus 閲囬泦鏁版嵁浜嗐€傜洰鍓嶆敮鎸� Prometheus涓� 鐨� Histogram 鍜� Summary銆傜敤鎴蜂篃鍙互閫氳繃鎵╁睍 Reporter 鎺ュ彛鏉ヨ嚜瀹氫箟鏁版嵁閲囬泦銆� - -鍦� tracing 鏂归潰锛岀洰鍓� dubbo-go 鐨勮璁℃槸閲囩敤 opentracing 浣滀负缁熶竴鐨� API锛屽湪璇� API 鐨勫熀纭€涓婏紝閫氳繃鍦� client 鍜� server 涔嬩腑浼犻€� context锛屼粠鑰屽皢鏁翠釜閾捐矾涓茶捣鏉ャ€傜敤鎴峰彲浠ラ噰鐢ㄤ换浣曟敮鎸� opentracing API 鐨勭洃鎺ф鏋舵潵浣滀负瀹炵幇锛屼緥濡� zipkin锛宩aeger 绛夈€� - -## 3\. rest鍗忚鏀寔 - -Dubbo 鐢熸€佺殑搴旂敤涓庡叾浠栫敓鎬佺殑搴旂敤浜掕仈浜掗€氾紝涓€鐩存槸 dubbo-go 绀惧尯杩芥眰鐨勭洰鏍囥€俤ubbo-go v1.3 鐗堟湰宸茬粡瀹炵幇浜� dubbo-go 涓� grpc 鐢熸€佸簲鐢ㄧ殑浜掕仈浜掗€氾紝鑻ユ兂涓庡叾浠栫敓鎬佸 Spring 鐢熸€佷簰鑱斾簰閫氾紝鍊熷姪 rest 鍗忚鏃犵枒鏄竴涓緢濂界殑鎶€鏈墜娈点€� - -Rest 鍗忚鏄竴涓緢寮哄ぇ骞朵笖绀惧尯鍛煎0寰堥珮鐨勭壒鎬э紝瀹冭兘澶熸湁鏁堣В鍐� open API锛屽墠绔€氫俊锛屽紓鏋勭郴缁熼€氫俊绛夐棶棰樸€傛瘮濡傦紝濡傛灉浣犵殑鍏徃閲岄潰鏈変竴浜涢檲骞翠唬鐮佹槸閫氳繃 http 鎺ュ彛鏉ユ彁渚涙湇鍔$殑锛岄偅涔堜娇鐢ㄦ垜浠殑 rest 鍗忚灏卞彲浠ユ棤缂濋泦鎴愪簡銆� - -閫氳繃鍦� dubbo-go 涓彂甯� RESTful 鐨勬帴鍙g殑搴旂敤鍙互璋冪敤浠绘剰鐨� RESTful 鐨勬帴鍙o紝涔熷彲浠ヨ浠讳綍瀹㈡埛绔互 http 鐨勫舰寮忚皟鐢紝妗嗘灦鍥惧涓嬶細 - - - - -鍦ㄨ璁¤繃绋嬩腑锛岃€冭檻鍒颁笉鍚岀殑鍏徃鍐呴儴浣跨敤鐨� web 妗嗘灦骞朵笉鐩稿悓锛屾墍浠ユ垜浠厑璁哥敤鎴锋墿灞曡嚜宸� rest server 锛� web 妗嗘灦鍦� dubbo-go鐨勫皝瑁咃級鐨勫疄鐜帮紝褰撶劧锛屼笌 rest server 鐩稿叧鐨勶紝璇稿 filter 绛夛紝閮藉彲浠ュ湪鑷繁鐨� rest server 瀹炵幇鍐呴儴鎵╁睍銆� - -## 4\. 璺敱鍔熻兘澧炲己 - -璺敱瑙勫垯鍦ㄥ彂璧蜂竴娆� RPC 璋冪敤鍓嶈捣鍒拌繃婊ょ洰鏍囨湇鍔″櫒鍦板潃鐨勪綔鐢紝杩囨护鍚庣殑鍦板潃鍒楄〃锛屽皢浣滀负娑堣垂绔渶缁堝彂璧� RPC 璋冪敤鐨勫閫夊湴鍧€銆倂1.4 鐗堟湰鐨� dubbo-go 瀹炵幇浜� Condition Router 鍜� Health Instance First Router锛屽皢鍦ㄥ悗闈㈢増鏈腑闄嗙画缁欏嚭璇稿 Tag Router 绛夊墿浣� Router 鐨勫疄鐜般€� - -### 4.1 鏉′欢璺敱 - -鏉′欢璺敱锛屾槸 dubbo-go 涓涓€涓敮鎸佺殑璺敱瑙勫垯锛屽厑璁哥敤鎴烽€氳繃閰嶇疆鏂囦欢鍙婅繙绔厤缃腑蹇冪鐞嗚矾鐢辫鍒欍€� - -涓庝箣鐩镐技鐨勪竴涓蹇垫槸 dubbo-go 閲岄潰鐨� group 姒傚康锛屼絾鏄潯浠惰矾鐢辨彁渚涗簡鏇村姞缁嗙矑搴︾殑鎺у埗鎵嬫鍜屾洿鍔犱赴瀵岀殑琛ㄨ揪璇箟銆傛瘮杈冨吀鍨嬬殑浣跨敤鍦烘櫙鏄粦鐧藉悕鍗曡缃紝鐏板害浠ュ強娴嬭瘯绛夈€� - -鍙傝€冭寖渚媆[2\]銆� - -### 4.2 鍋ュ悍瀹炰緥浼樺厛璺敱 - -鍦� RPC 璋冪敤涓紝鎴戜滑甯屾湜灏藉彲鑳藉湴灏嗚姹傚懡涓埌閭d簺澶勭悊鑳藉姏蹇€佸浜庡仴搴风姸鎬佺殑瀹炰緥锛岃璺敱鐨勫姛鑳藉氨鏄€氳繃鏌愮绛栫暐鏂畾鏌愪釜瀹炰緥涓嶅仴搴凤紝骞跺皢鍏舵帓闄ゅ湪鍊欓€夎皟鐢ㄥ垪琛紝浼樺厛璋冪敤閭d簺鍋ュ悍鐨勫疄渚嬨€傝繖閲岀殑"鍋ュ悍"鍙互鏄垜浠嚜宸卞畾涔夌殑鐘舵€侊紝榛樿瀹炵幇鍗冲綋閿欒姣斾緥鍒拌揪鏌愪竴涓槇鍊兼椂鎴栬€呰姹傛椿璺冩暟澶т簬涓婇檺鍒欒涓哄叾涓嶅仴搴凤紝鍏佽鐢ㄦ埛鎵╁睍鍋ュ悍妫€娴嬬瓥鐣ャ€� - -鍦ㄦ垜浠湇鍔℃不鐞嗛噷闈紝鏍稿績鐨勯棶棰樺叾瀹炲氨鍦ㄤ簬濡備綍鍒ゆ柇涓€涓疄渚嬫槸鍚﹀彲鐢ㄣ€傛棤璁烘槸璐熻浇鍧囪 銆� - -鐔旀柇杩樻槸闄愭祦锛岄兘鏄杩欎釜闂鐨勮В绛斻€傛墍浠ワ紝杩欎釜 feature 鏄竴涓緢濂界殑灏濊瘯銆傚洜涓烘垜浠帴涓嬫潵璁″垝鎻愪緵鐨勭壒鎬э紝鍩轰簬瑙勫垯鐨勯檺娴佷互鍙婂姩鎬侀檺娴侊紝閮芥槸瑕佽В鍐斥€滃浣曟柇瀹氫竴涓疄渚嬫槸鍚﹀彲鐢ㄢ€濊繖涔堜竴涓棶棰樸€� - -鎵€浠ユ杩庡ぇ瀹朵娇鐢ㄨ繖涓壒鎬э紝骞跺悜绀惧尯鍙嶉鍚勮嚜璁惧畾鐨勫仴搴锋寚鏍囥€傝繖瀵规垜浠帴涓嬫潵鐨勫伐浣滀細鏈夊緢澶х殑甯姪銆� - -## 5\. hessian 鍗忚澧炲己 - -鐩歌緝浜� dubbo 鐨� Java 璇█浠ュ強鍏朵粬澶氳瑷€鐗堟湰锛宒ubbo-go 绀惧尯姣旇緝鑷豹鐨勫湴鏂逛箣涓€灏辨槸锛氭棤璁哄簳灞傜綉缁滃紩鎿庤繕鏄師鐢熶娇鐢ㄧ殑 hessian2 鍗忚锛屼互鍙婃暣浣撴湇鍔℃不鐞嗘鏋讹紝閮界敱 dubbo-go 绀惧尯浠庨浂寮€鍙戝苟缁存姢銆倂1.4 鐗堟湰鐨� dubbo-go 瀵� hessian2 鍗忚鍙堝甫鏉ヤ簡璇稿鏂� feature銆� - -### 5.1 鏀寔 dubbo 鍗忚鐨� attachments - -鍦� dubbo-go涓紝attachments 鏈哄埗鐢ㄤ簬浼犻€掍笟鍔″弬鏁颁箣澶栫殑闄勫姞淇℃伅锛屾槸鍦ㄥ鎴风鍜屾湇鍔$涔嬮棿浼犻€掗潪涓氬姟鍙傛暟淇℃伅鐨勯噸瑕佹柟寮忋€� - -hessian 缂栫爜鍗忚灏嗕箣缂栫爜鍦� body 鍐呭鐨勫悗闈㈣繘琛屼紶杈擄紝dubbo-go-hessian2 涔嬪墠骞朵笉鏀寔璇�/鍐� attachments锛屽湪澶氫釜浣跨敤鏂广€愬铓傝殎閲戞湇銆戠殑瑕佹眰涓嬶紝dubbo-go-hessian2 浠ュ吋瀹瑰凡鏈夌殑浣跨敤鏂瑰紡涓哄墠鎻愶紝鏀寔浜� attachments 鐨勮/鍐欍€� - -Request 鍜� Response 鐨� struct 涓畾涔変簡 attachments 鐨� map锛屽綋闇€瑕佷娇鐢� attachments锛岄渶瑕佺敱浣跨敤鏂规瀯閫犺繖涓ょ绫诲瀷鐨勫弬鏁版垨鑰呰繑鍥炲璞°€傚惁鍒欙紝灏嗘棤娉曞湪hessian鐨勪紶杈撴祦涓幏鍙栧拰鍐欏叆attachments銆� - -鍙﹀锛屽埄鐢� dubbo-go 璋冪敤閾句腑浼犺緭 context 鐨勫姛鑳斤紝鐢ㄦ埛宸茬粡鍙互鍦ㄦ湇鍔℃柟娉曚腑閫氳繃 context 娣诲姞 attachments浜嗐€� - -### 5.2 鏀寔蹇界暐闈炴敞鍐� pojo 鐨勮В鏋愭柟寮� - -鐢变簬 hessian 缂栫爜鍗忚涓� Java 鐨勭被鍨嬮珮搴﹁€﹀悎锛屽湪 golang 鐨勫疄鐜颁腑浼氱浉瀵规瘮杈冮夯鐑︼紝闇€瑕佹湁鎸囨槑鐨勫搴旂被鍨嬨€俤ubbo-go-hessian2 鐨勫疄鐜版柟寮忔槸锛氬畾涔� POJO 鎺ュ彛锛岃姹傚疄鐜� JavaClassName 鏂规硶鏉ヤ緵绋嬪簭鑾峰彇 Java 瀵瑰簲鐨勭被鍚嶃€傝繖瀵艰嚧浜嗘帴鏀跺埌鍖呭惈鏈敞鍐岀被鐨勮姹傛椂锛屽皢浼氭棤娉曡В鏋愯€屾姤閿欙紝杩欎釜闂浠ュ墠鏄棤娉曡В鍐崇殑銆� - -浣嗘槸锛屾湁涓€浜涗娇鐢ㄥ満鏅缃戝叧鎴栬€� service mesh 鐨� sidecar锛岄渶瑕佸湪涓嶅叧蹇� Java 绫荤殑鍏蜂綋瀹氫箟鐨勬儏鍐典笅锛屽儚 http璇诲彇 header 淇℃伅涓€鏍蜂粎浠呰鍙� dubbo 璇锋眰鐨勯檮鍔犱俊鎭紝灏� dubbo/dubbo-go 璇锋眰杞彂銆傞€氳繃璇� feature锛岀綉鍏�/sidecar 骞朵笉鍏虫敞璇锋眰鐨勫叿浣撳唴瀹癸紝鍙互鍦ㄨВ鏋愯姹傜殑鏁版嵁娴佹椂璺宠繃鏃犳硶瑙f瀽鐨勫叿浣撶被鍨嬶紝鐩存帴璇诲彇 attachments 鐨勫唴瀹广€� - -璇ュ疄鐜伴€氳繃鍦� Decoder 涓坊鍔犵殑 skip 瀛楁锛屽姣忎竴涓� object 鍋氬嚭鐗规畩澶勭悊銆� - -### 5.3 鏀寔 java.math.BigInteger 鍜� java.math.BigDecimal - -鍦� Java 鏈嶅姟涓紝java.math.BigInteger 鍜� java.math.BigDecimal 鏄棰戠箒浣跨敤鐨勬暟瀛楃被鍨嬶紝hessian 搴撳皢瀹冧滑鏄犲皠涓� github.com/dubbogo/gost/math/big 涓嬬殑瀵瑰簲绫诲瀷銆� - -### 5.4 鏀寔 鈥樼户鎵库€� 鍜屽拷鐣ュ啑浣欏瓧娈� - -鐢变簬 go 娌℃湁缁ф壙鐨勬蹇碉紝鎵€浠ュ湪涔嬪墠鐨勭増鏈紝Java 鐖剁被鐨勫瓧娈典笉琚� dubbo-go-hessian2 鎵€鏀寔銆傛柊鐗堟湰涓紝dubbo-go-hessian2 灏咼ava鏉ヨ嚜鐖剁被鐨勫瓧娈电敤鍖垮悕缁撴瀯浣撳搴旓紝濡傦細 - -```cpp -type Dog struct { - Animal - Gender string - DogName string `hessian:"-"` -} -``` - -鍚屾椂锛屽氨鍍� json 缂栫爜涓€氳繃聽`immediately`聽鍙互鍦ㄥ簭鍒楀寲涓拷鐣ヨ瀛楁锛屽悓鐞嗭紝閫氳繃聽`hessian:"-"`聽鐢ㄦ埛涔熷彲浠ヨ鍐椾綑瀛楁涓嶅弬涓� hessian 搴忓垪鍖栥€� - -鐩墠锛屼笂杩板洓涓壒鎬у凡琚煇 Go 鐗堟湰鐨� sidecar 闆嗘垚鍒板叾鍟嗕笟鐗堟湰涓彁渚涘晢涓氭湇鍔°€� - -## 6\. Nacos 閰嶇疆涓績 - -閰嶇疆涓績鏄幇浠e井鏈嶅姟鏋舵瀯閲岄潰鐨勬牳蹇冪粍浠讹紝鐜板湪 dubbo-go 鎻愪緵浜嗗閰嶇疆涓績鐨勬敮鎸併€� - - - -Nacos 浣滀负涓€涓槗浜庢瀯寤轰簯鍘熺敓搴旂敤鐨勫姩鎬佹湇鍔″彂鐜般€侀厤缃鐞嗗拰鏈嶅姟绠$悊骞冲彴锛屽湪璇ョ増鏈粓浜庝綔涓洪厤缃腑蹇冭€屽緱鍒颁簡鏀寔銆� - -鍙傝€冭寖渚媆[3\]. - -## 7\. 鎺ュ彛绾х鍚嶈璇� - -Dubbo 閴存潈璁よ瘉鏄负浜嗛伩鍏嶆晱鎰熸帴鍙h鍖垮悕鐢ㄦ埛璋冪敤鑰屽湪 SDK 灞傞潰鎻愪緵鐨勯澶栦繚闅溿€傜敤鎴峰彲浠ュ湪鎺ュ彛绾у埆杩涜瀹氫箟鏄惁鍏佽鍖垮悕璋冪敤锛屽苟瀵硅皟鐢ㄦ柟杩涜楠岀鎿嶄綔锛屽浜庨獙绛句笉閫氳繃鐨勬秷璐圭锛岀姝㈣皟鐢ㄣ€� - - - -濡備笂鍥撅紝鎬讳綋瀹炵幇鍩轰簬 AK/SK 鏈哄埗锛屽簲鐢ㄩ€氳繃 HTTPS 閫氫俊锛屽惎鍔ㄦ椂鍚戦壌鏉冩湇鍔℃媺鍙栵紝瀹氭湡鏇存柊銆備笖鍏佽鐢ㄦ埛鑷畾涔夎幏鍙� AK/SK 鐨勬簮锛屽湪 RPC 灞傞潰淇濋殰瀹夊叏鎬с€� - -## 8\. 鍥為【涓庡睍鏈� - -鐩墠 dubbo-go 宸茬粡鍒颁簡涓€涓瘮杈冪ǔ瀹氭垚鐔熺殑鐘舵€併€傚湪鎺ヤ笅鏉ョ殑鐗堟湰閲岄潰锛屾垜浠皢闆嗕腑绮惧姏鍦ㄤ簯鍘熺敓涓娿€備笅涓€涓増鏈紝鎴戜滑灏嗛鍏堝疄鐜板簲鐢ㄧ淮搴︾殑鏈嶅姟娉ㄥ唽锛岃繖鏄竴涓拰鐜版湁娉ㄥ唽妯″瀷瀹屽叏涓嶅悓鐨勬柊鐨勬敞鍐屾ā鍨嬨€備篃鏄垜浠湞鐫€浜戝師鐢熷姫鍔涚殑涓€涓叧閿増鏈€� - -鍦ㄥ彲瑙傛祴鎬т笂锛屾垜浠鍒掑湪鏁翠釜 dubbo-go 鐨勬鏋跺唴锛屽紩鍏ユ洿澶氱殑鍩嬬偣锛屾敹闆嗘洿鍔犲鐨勫唴閮ㄧ姸鎬併€傝繖闇€瑕佸疄闄呯敓浜х幆澧冪敤鎴风殑浣跨敤鍙嶉锛屼粠鑰岀煡閬撹濡備綍鍩嬬偣锛屾敹闆嗕綍绉嶆暟鎹€� - -鍦ㄩ檺娴佸拰鐔旀柇涓婏紝鍙互杩涗竴姝ユ墿灞曘€傚綋涓嬬殑闄愭祦绠楁硶锛屾槸涓€绉嶉潤鎬佺殑绠楁硶--闄愭祦鍙傛暟骞舵病鏈夊疄鏃舵牴鎹綋鍓嶆湇鍔″櫒鐨勭姸鎬佹潵鎺ㄦ柇鏄惁搴旇闄愭祦锛屽畠鍙兘浠呬粎鏄敤鎴风殑缁忛獙鍊笺€傚叾缂虹偣鍦ㄤ簬锛岀敤鎴烽毦浠ユ妸鎻″簲璇ュ浣曢厤缃紝渚嬪 TPS 绌剁珶搴旇璁剧疆鍦ㄥ澶с€傛墍浠ヨ鍒掑紩鍏ヤ竴绉嶅熀浜庤鍒欑殑闄愭祦鍜岀啍鏂€傝繖绉嶅熀浜庤鍒欑殑闄愭祦鍜岀啍鏂紝灏嗗厑璁哥敤鎴疯缃竴浜涚郴缁熺姸鎬佺殑鐘舵€侊紝濡� CPU 浣跨敤鐜囷紝纾佺洏 IO锛岀綉缁� IO 绛夈€傚綋绯荤粺鐘舵€佺鍚堢敤鎴疯鍒欐椂锛屽皢瑙﹀彂鐔旀柇銆� - -鐩墠杩欎簺瑙勫垝鐨劼犱换鍔℃竻鍗昞[4\]锛岄兘宸茬粡鏀惧叆鍦� dubbo-go 椤圭洰鐨� issue 閲岄潰锛屾杩庢劅鍏磋叮鐨勬湅鍙嬭棰嗗弬涓庡紑鍙戙€俤ubbo-go 绀惧尯鍦�**閽夐拤缇� 23331795**聽娆㈣繋浣犵殑鍔犲叆銆� - -**鏂囦腑閾炬帴锛�** - -\[1\]聽https://github.com/apache/dubbo-samples/tree/master/golang/registry/kubernetes - -\[2\]聽https://github.com/dubbogo/dubbo-samples/tree/master/golang/router/condition - -\[3\]聽https://github.com/dubbogo/dubbo-samples/tree/master/golang/configcenter/nacos - -\[4\]聽https://github.com/apache/dubbo-go/milestone/1 - -**鍙傝€冮槄璇伙細** - -* [浠巐stio鐨勮搴﹁皥寰湇鍔$殑涓€浜涜鍖篯(https://blog.csdn.net/weixin_45583158/article/details/105085686) - -* [Go璇█濡備綍瀹炵幇stop the world锛焆(https://blog.csdn.net/weixin_45583158/article/details/104912555) - -* [鍏充簬Golang GC鐨勪竴浜涜瑙�--鐪熺殑姣擩ava绠楁硶鏇撮鍏堝悧锛焆(https://blog.csdn.net/weixin_45583158/article/details/100143593) - -* [Swift绋嬪簭鍛樺Rust鍗拌薄锛氬唴瀛樼鐞哴(https://blog.csdn.net/weixin_45583158/article/details/104853360) - -* [JDK 14鍙戝竷锛岀┖鎸囬拡閿欒鏀硅繘姝e紡钀藉湴](https://blog.csdn.net/weixin_45583158/article/details/104981073) \ No newline at end of file diff --git a/doc/md/interview/what's-new-in -dubbo-go-v1.5.1.md b/doc/md/interview/what's-new-in -dubbo-go-v1.5.1.md deleted file mode 100644 index 5b41872fd01dffed2f78189bea9366a39cebd2f5..0000000000000000000000000000000000000000 --- a/doc/md/interview/what's-new-in -dubbo-go-v1.5.1.md +++ /dev/null @@ -1,169 +0,0 @@ -# [Dubbo-go v1.5.1 鍙戝竷锛孉pache Dubbo 鐨� Go 瀹炵幇](https://www.oschina.net/news/118469/dubbo-go-1-5-1-released) - -Dubbo-go 鍥㈤槦杩戞湡鍙戝竷浜� Dubbo-go v1.5.1锛孌ubbo-go 鏄� Apache Dubbo 椤圭洰鐨� Go 瀹炵幇銆� - -鏍规嵁鍥㈤槦鐨勪粙缁嶏紝铏界劧 v1.5.1 鏄� v1.5 鐨勪竴涓瓙鐗堟湰锛屼絾鐩告瘮浜� v1.5.0锛� 绀惧尯杩樻槸鎶曞叆浜嗗緢澶т汉鍔涙坊鍔犱簡濡備笅閲嶅ぇ鏀硅繘銆� - -## 1 搴旂敤缁村害娉ㄥ唽妯″瀷 - -鍦ㄦ柊妯″瀷 release 鍚庯紝鍥㈤槦鍙戠幇 Provider 姣忎釜 URL 鍙戝竷鍏冩暟鎹兘浼氭敞鍐� ServiceInstance锛屽奖鍝嶆€ц兘闇€瑕佷紭鍖栥€� - -浼樺寲鏂规鏄細 鍘婚櫎 ServiceDiscoveryRegistry 涓敞鍐� ServiceInstance 鐨勪唬鐮侊紝鍦� config_loader 涓殑 loadProviderConfig 鏂规硶鐨勬渶鍚庢敞鍐� ServiceInstance 鍏蜂綋姝ラ锛� - -1銆佽幏鍙栨墍鏈夋敞鍐岀殑 Registry锛岃繃婊ゅ嚭 ServiceDiscoveryRegistry锛屾嬁鍙栨墍鏈� ServiceDiscovery銆� -2銆佸垱寤� ServiceInstance銆� -3銆佹瘡涓� ServiceDiscovery 娉ㄥ唽 ServiceInstance銆� - -淇濊瘉 Provider 鍦ㄦ敞鍐屾垚鍔熶箣鍚庯紝鎵嶆毚闇插厓鏁版嵁淇℃伅銆� - -## 2 鏀寔鍩轰簬 Seata 鐨勪簨鍔� - -鍩轰簬 Seata 鎵╁睍瀹炵幇銆傞€氳繃澧炲姞杩囨护鍣紝鍦ㄦ湇鍔$鎺ユ敹 xid 骞剁粨鍚� seata-golang 杈惧埌鏀寔鍒嗗竷寮忎簨鍔$殑鐩殑銆� 浠庤€屼娇 Dubbo-go 鍦ㄥ垎甯冨紡鍦烘櫙涓嬶紝璁╃敤鎴锋湁鏇村鐨勯€夋嫨锛岃兘閫傚簲鏇村鐨勪釜鎬у寲鍦烘櫙銆� - -寮€鍙戝洟闃熷湪 dubbo-samples 涓粰鍑轰簡 浜嬪姟娴嬭瘯鐢ㄤ緥 銆� - -## 3 澶氭敞鍐屼腑蹇冮泦缇よ礋杞藉潎琛� - -瀵逛簬澶氭敞鍐屼腑蹇冭闃呯殑鍦烘櫙锛岄€夊潃鏃剁殑澶氫簡涓€灞傛敞鍐屼腑蹇冮泦缇ら棿鐨勮礋杞藉潎琛★細 - -鍦� Cluster Invoker 杩欎竴绾э紝鏀寔鐨勯€夊潃绛栫暐鏈夛細 - -- 鎸囧畾浼樺厛绾� -- 鍚� zone 浼樺厛 -- 鏉冮噸杞 - -## 3 浼犺緭閾捐矾瀹夊叏鎬� - -璇ョ増鏈湪浼犺緭閾捐矾鐨勫畨鍏ㄦ€т笂鍋氫簡灏濊瘯锛屽浜庡唴缃殑 Dubbo getty Server 鎻愪緵浜嗗熀浜� TLS 鐨勫畨鍏ㄩ摼璺紶杈撴満鍒躲€� - -涓哄敖鍙兘淇濊瘉搴旂敤鍚姩鐨勭伒娲绘€э紝TLS Cert 鐨勬寚瀹氶€氳繃閰嶇疆鏂囦欢鏂瑰紡锛屽叿浣撹鍙傝 Dubbo-go 閰嶇疆璇诲彇瑙勫垯涓� TLS 绀轰緥锛� - -## 4 璺敱鍔熻兘澧炲己 - -鏈璺敱鍔熻兘閲嶇偣鏀寔浜� 鍔ㄦ€佹爣绛捐矾鐢� 鍜� 搴旂敤/鏈嶅姟绾ф潯浠惰矾鐢便€� - -### 4.1 鍔ㄦ€佹爣绛捐矾鐢� - -鏍囩璺敱閫氳繃灏嗘煇涓€涓垨澶氫釜鏈嶅姟鐨勬彁渚涜€呭垝鍒嗗埌鍚屼竴涓垎缁勶紝绾︽潫娴侀噺鍙湪鎸囧畾鍒嗙粍涓祦杞紝浠庤€屽疄鐜版祦閲忛殧绂荤殑鐩殑锛屽彲浠ヤ綔涓鸿摑缁垮彂甯冦€佺伆搴﹀彂甯冪瓑鍦烘櫙鐨勮兘鍔涘熀纭€銆� - -鏍囩涓昏鏄寚瀵� Provider 绔簲鐢ㄥ疄渚嬬殑鍒嗙粍锛岀洰鍓嶆湁涓ょ鏂瑰紡鍙互瀹屾垚瀹炰緥鍒嗙粍锛屽垎鍒槸鍔ㄦ€佽鍒欐墦鏍囧拰闈欐€佽鍒欐墦鏍囷紝鍏朵腑鍔ㄦ€佽鍒欑浉杈冧簬闈欐€佽鍒欎紭鍏堢骇鏇撮珮锛岃€屽綋涓ょ瑙勫垯鍚屾椂瀛樺湪涓斿嚭鐜板啿绐佹椂锛屽皢浠ュ姩鎬佽鍒欎负鍑嗐€� - -### 4.1.1 鍔ㄦ€佽鍒欐墦鏍� - -鍙殢鏃跺湪鏈嶅姟娌荤悊鎺у埗鍙颁笅鍙戞爣绛惧綊缁勮鍒� - -```yml -# governance-tagrouter-provider搴旂敤澧炲姞浜嗕袱涓爣绛惧垎缁則ag1鍜宼ag2 -# tag1鍖呭惈涓€涓疄渚� 127.0.0.1:20880 -# tag2鍖呭惈涓€涓疄渚� 127.0.0.1:20881 ---- - force: false - runtime: true - enabled: true - key: governance-tagrouter-provider - tags: - - name: tag1 - addresses: ["127.0.0.1:20880"] - - name: tag2 - addresses: ["127.0.0.1:20881"] - ... -``` - -### 4.1.2 闈欐€佽鍒欐墦鏍� - -鍙互鍦� server 閰嶇疆鏂囦欢鐨� tag 瀛楁閲岃缃� - -```yml -services: - "UserProvider": - registry: "hangzhouzk" - protocol: "dubbo" - interface: "com.ikurento.user.UserProvider" - loadbalance: "random" - warmup: "100" - tag: "beijing" - cluster: "failover" - methods: - - name: "GetUser" - retries: 1 - loadbalance: "random" -``` - -consumer 娣诲姞 tag 鑷� attachment 鍗冲彲 - -```go -ctx := context.Background() -attachment := make(map[string]string) -attachment["dubbo.tag"] = "beijing" -ctx = context.WithValue(ctx, constant.AttachmentKey, attachment) -err := userProvider.GetUser(ctx, []interface{}{"A001"}, user) -``` - -璇锋眰鏍囩鐨勪綔鐢ㄥ煙涓烘瘡涓€娆� invocation锛屼娇鐢� attachment 鏉ヤ紶閫掕姹傛爣绛撅紝娉ㄦ剰淇濆瓨鍦� attachment 涓殑鍊煎皢浼氬湪涓€娆″畬鏁寸殑杩滅▼璋冪敤涓寔缁紶閫掞紝寰楃泭浜庤繖鏍风殑鐗规€э紝鍙渶瑕佸湪璧峰璋冪敤鏃讹紝閫氳繃涓€琛屼唬鐮佺殑璁剧疆锛岃揪鍒版爣绛剧殑鎸佺画浼犻€掋€� - -### 4.1.3 瑙勫垯璇﹁В - -鏍煎紡 -Key 鏄庣‘瑙勫垯浣撲綔鐢ㄥ埌鍝釜搴旂敤銆傚繀濉€� -enabled=true 褰撳墠璺敱瑙勫垯鏄惁鐢熸晥锛屽彲涓嶅~锛岀己鐪佺敓鏁堛€� -force=false 褰撹矾鐢辩粨鏋滀负绌烘椂锛屾槸鍚﹀己鍒舵墽琛岋紝濡傛灉涓嶅己鍒舵墽琛岋紝璺敱缁撴灉涓虹┖鐨勮矾鐢辫鍒欏皢鑷姩澶辨晥锛屽彲涓嶅~锛岀己鐪佷负 false銆� -runtime=false 鏄惁鍦ㄦ瘡娆¤皟鐢ㄦ椂鎵ц璺敱瑙勫垯锛屽惁鍒欏彧鍦ㄦ彁渚涜€呭湴鍧€鍒楄〃鍙樻洿鏃堕鍏堟墽琛屽苟缂撳瓨缁撴灉锛岃皟鐢ㄦ椂鐩存帴浠庣紦瀛樹腑鑾峰彇璺敱缁撴灉銆傚鏋滅敤浜嗗弬鏁拌矾鐢憋紝蹇呴』璁句负 true锛岄渶瑕佹敞鎰忚缃細褰卞搷璋冪敤鐨勬€ц兘锛屽彲涓嶅~锛岀己鐪佷负 false銆� -priority=1 璺敱瑙勫垯鐨勪紭鍏堢骇锛岀敤浜庢帓搴忥紝浼樺厛绾ц秺澶ц秺闈犲墠鎵ц锛屽彲涓嶅~锛岀己鐪佷负 0銆� -tags 瀹氫箟鍏蜂綋鐨勬爣绛惧垎缁勫唴瀹癸紝鍙畾涔変换鎰� n锛坣>=1锛変釜鏍囩骞朵负姣忎釜鏍囩鎸囧畾瀹炰緥鍒楄〃銆傚繀濉� -name锛� 鏍囩鍚嶇О -addresses锛� 褰撳墠鏍囩鍖呭惈鐨勫疄渚嬪垪琛� -闄嶇骇绾﹀畾 -request.tag=tag1 鏃朵紭鍏堥€夋嫨 鏍囪浜� tag=tag1 鐨� provider銆傝嫢闆嗙兢涓笉瀛樺湪涓庤姹傛爣璁板搴旂殑鏈嶅姟锛岄粯璁ゅ皢闄嶇骇璇锋眰 tag 涓虹┖鐨� provider锛涘鏋滆鏀瑰彉杩欑榛樿琛屼负锛屽嵆鎵句笉鍒板尮閰� tag1 鐨� provider 杩斿洖寮傚父锛岄渶璁剧疆 request.tag.force=true銆� -request.tag 鏈缃椂锛屽彧浼氬尮閰� tag 涓虹┖鐨� provider銆傚嵆浣块泦缇や腑瀛樺湪鍙敤鐨勬湇鍔★紝鑻� tag 涓嶅尮閰嶄篃灏辨棤娉曡皟鐢紝杩欎笌绾﹀畾 1 涓嶅悓锛屾惡甯︽爣绛剧殑璇锋眰鍙互闄嶇骇璁块棶鍒版棤鏍囩鐨勬湇鍔★紝浣嗕笉鎼哄甫鏍囩/鎼哄甫鍏朵粬绉嶇被鏍囩鐨勮姹傛案杩滄棤娉曡闂埌鍏朵粬鏍囩鐨勬湇鍔°€� - -## 4.2 搴旂敤/鏈嶅姟绾ф潯浠惰矾鐢� - -鍙互鍦ㄨ矾鐢辫鍒欓厤缃腑閰嶇疆澶氫釜鏉′欢璺敱鍙婂叾绮掑害 - -Sample: - -```yml -# dubbo router yaml configure file -routerRules: - - scope: application - key: BDTService - priority: 1 - enable: false - force: true - conditions: ["host = 192.168.199.208 => host = 192.168.199.208 "] - - scope: service - key: com.ikurento.user.UserProvider - priority: 1 - force: true - conditions: ["host = 192.168.199.208 => host = 192.168.199.208 "] -``` - -### 4.2.1 瑙勫垯璇﹁В - -#### 鍚勫瓧娈靛惈涔� - -- scope 琛ㄧず璺敱瑙勫垯鐨勪綔鐢ㄧ矑搴︼紝scope 鐨勫彇鍊间細鍐冲畾 key 鐨勫彇鍊笺€傚繀濉€� - - service 鏈嶅姟绮掑害 - - application 搴旂敤绮掑害 -- Key 鏄庣‘瑙勫垯浣撲綔鐢ㄥ湪鍝釜鏈嶅姟鎴栧簲鐢ㄣ€傚繀濉€� - - scope=service 鏃讹紝key 鍙栧€间负[{group}/]{service}[:{version}]鐨勭粍鍚� - - scope=application 鏃讹紝key 鍙栧€间负 application 鍚嶇О -- enabled=true 褰撳墠璺敱瑙勫垯鏄惁鐢熸晥锛屽彲涓嶅~锛岀己鐪佺敓鏁堛€� -- force=false 褰撹矾鐢辩粨鏋滀负绌烘椂锛屾槸鍚﹀己鍒舵墽琛岋紝濡傛灉涓嶅己鍒舵墽琛岋紝璺敱缁撴灉涓虹┖鐨勮矾鐢辫鍒欏皢鑷姩澶辨晥锛屽彲涓嶅~锛岀己鐪佷负 false銆� -- runtime=false 鏄惁鍦ㄦ瘡娆¤皟鐢ㄦ椂鎵ц璺敱瑙勫垯锛屽惁鍒欏彧鍦ㄦ彁渚涜€呭湴鍧€鍒楄〃鍙樻洿鏃堕鍏堟墽琛屽苟缂撳瓨缁撴灉锛岃皟鐢ㄦ椂鐩存帴浠庣紦瀛樹腑鑾峰彇璺敱缁撴灉銆傚鏋滅敤浜嗗弬鏁拌矾鐢憋紝蹇呴』璁句负 true锛岄渶瑕佹敞鎰忚缃細褰卞搷璋冪敤鐨勬€ц兘锛屽彲涓嶅~锛岀己鐪佷负 false銆� -- priority=1 璺敱瑙勫垯鐨勪紭鍏堢骇锛岀敤浜庢帓搴忥紝浼樺厛绾ц秺澶ц秺闈犲墠鎵ц锛屽彲涓嶅~锛岀己鐪佷负 0銆� -- conditions 瀹氫箟鍏蜂綋鐨勮矾鐢辫鍒欏唴瀹广€傚繀濉€� - -## 5 鍥為【涓庡睍鏈� - -Dubbo-go 澶勪簬涓€涓瘮杈冪ǔ瀹氭垚鐔熺殑鐘舵€併€傜洰鍓嶆柊鐗堟湰姝e浜庡線浜戝師鐢熸柟鍚戠殑灏濊瘯锛屽簲鐢ㄦ湇鍔$淮搴︽敞鍐屾槸棣栧厛鎺ㄥ嚭鐨勫姛鑳斤紝杩欐槸涓€涓拰涔嬪墠妯″瀷瀹屽叏涓嶄竴鏍风殑鏂版敞鍐屾ā鍨嬨€傝鐗堟湰鏄湞浜戝師鐢熻繄杩涙柊涓€姝ョ殑鍏抽敭鐗堟湰銆傞櫎姝や箣澶栵紝鍖呭惈鍦ㄨ鐗堟湰涔熸湁涓€浜涗箣鍓嶆彁鍒扮殑浼樺寲銆� - -涓嬩竴涓増鏈� v1.5.2锛屾湰娆$殑鍏虫敞閲嶇偣浠ラ€氫俊妯″瀷鏀硅繘涓轰富锛岄櫎姝や箣澶栵紝涓� 2.7.x 鐨勫吋瀹规€с€佹槗鐢ㄦ€у強璐ㄩ噺淇濊瘉涔熸槸鏈鍏虫敞鐨勪俊鎭€� - -鍦ㄦ湇鍔″彂鐜帮紝浼氭敮鎸佹洿鍔犲鐨勬柟寮忥紝濡傦細鏂囦欢銆丆onsul銆� 浠庤€屼娇 Dubbo-go 鍦ㄦ湇鍔″彂鐜板満鏅笅锛岃鐢ㄦ埛鏈夋洿澶氱殑閫夋嫨锛岃兘閫傚簲鏇村鐨勪釜鎬у寲鍦烘櫙銆� - -鍙﹀ 鏄撶敤鎬у強璐ㄩ噺淇濊瘉锛屼富瑕佸叧娉ㄧ殑鏄� samples 涓庤嚜鍔ㄥ寲鏋勫缓閮ㄥ垎銆傚彲闄嶄綆鐢ㄦ埛涓婃墜 Dubbo-go 鐨勯毦搴︼紝鎻愰珮浠g爜璐ㄩ噺銆� - -鐩墠涓嬩竴涓増鏈鍦ㄧ揣閿e瘑榧撶殑寮€鍙戜腑锛屽叿浣撹鍒掑強浠诲姟娓呭崟锛岄兘宸茬粡鍦� Github 涓婁綋鐜般€� - -鏇村淇℃伅锛歨ttps://github.com/apache/dubbo-go/releases/tag/v1.5.1 diff --git a/doc/md/interview/what's-new-in -dubbo-go-v1.5.md b/doc/md/interview/what's-new-in -dubbo-go-v1.5.md deleted file mode 100644 index 831b07e6f3d4b34992a15d52951cc0c04b88539c..0000000000000000000000000000000000000000 --- a/doc/md/interview/what's-new-in -dubbo-go-v1.5.md +++ /dev/null @@ -1,99 +0,0 @@ -# [Dubbo-go 鍙戝竷 1.5 鐗堬紝鏈濅簯鍘熺敓杩堝嚭鍏抽敭涓€姝(https://mp.weixin.qq.com/s/zqRmQ3gsdKj47cO22Dwczw) - -## 寮曡 - -璁$畻鏈烘妧鏈氮娼瘡 10 骞撮兘鏈変竴娆℃妧鏈瑕嗭紝鐩稿叧鐭ヨ瘑浣撶郴鏈€杩熸瘡 5 骞撮兘浼氶潻鏂颁竴娆★紝澶ф姣忎袱骞磋船鍊间竴鍗婏紝鍦ㄥ簲鐢ㄦ湇鍔¢€氫俊妗嗘灦棰嗗煙浜︾劧銆傚嚒鏄湁闀挎湡鐢熷懡鐨勯€氫俊妗嗘灦锛屽ぇ姒傛湁 5 骞寸殑鎴愰暱鏈熷拰 5 骞寸殑绋冲畾鎴愮啛鏈熴€傛瘡涓椂浠i兘鏈夊叾鍖归厤鐨勫簲鐢ㄩ€氫俊妗嗘灦锛屽湪 20 骞村墠鐨� 2G 鏃朵唬锛屽己璺ㄨ瑷€璺ㄥ钩鍙拌€屽急鎬ц兘鐨� gRPC 鏄笉浼氳閲囩敤鐨勩€� - -姣忎釜閫氫俊妗嗘灦锛屼笉鍚岀殑浜轰粠涓嶅悓瑙掑害鐪嬪嚭涓嶅悓鐨勭粨璁猴細鍒濆鑰呯湅閲嶆槗鐢ㄦ槗瀛︼紝鎬ц兘娴嬭瘎鑰呮敞閲嶆€ц兘锛屽簲鐢ㄦ灦鏋勫笀鑰冭檻鍏剁淮鎶ゆ垚鏈紝鑰佹澘鍒欒€冭檻鍒欑患鍚堟垚鏈€備竴涓簲鐢ㄩ€氫俊妗嗘灦鐨勬€ц兘鍥虹劧閲嶈锛屽叾绋冲畾鎬у拰杩涘寲鑳藉姏鏇撮噸瑕侊紝寰楀埌鏈夋晥缁存姢鐨勬鏋跺彲鍦ㄩ暱鏃堕棿鍗曚綅鍐呴檷浣庡叾缁煎悎鎴愭湰锛氬涔犳垚鏈€佺淮鎶ゆ垚鏈€佸崌绾ф垚鏈拰鏇存崲鎴愭湰銆� - -浠€涔堟槸 Dubbo-go锛熺涓€锛屽畠鏄� Dubbo 鐨� Go 璇█鐗堟湰锛屽叏闈㈠吋瀹� Dubbo 鏄叾绗竴瑕佷箟銆傜浜岋紝瀹冩槸涓€涓� Go 璇█搴旂敤閫氫俊妗嗘灦锛屼細鍏呭垎鍒╃敤浣滀负浜戝師鐢熸椂浠g涓€璇█---Go 璇█鐨勪紭鍔匡紝鎵╁睍 dubbo 鐨勮兘鍔涖€� - -2008 骞磋癁鐢熺殑 Dubbo 宸叉湁鍗佸骞村巻鍙诧紝渚濋潬闃块噷鍜屽叾绀惧尯锛屽巻涔呭讥鏂般€�2016 骞村彂甯冪殑 Dubbo-go 涔熷凡杩涘叆绗簲涓勾澶达紝濡備粖鍏ㄩ潰鍏煎 Dubbo v2.7.x 鐨� Dubbo-go v1.5 缁堜簬鍙戝竷浜嗐€� - -鍥為杩囧線锛孌ubbo-go 宸茬粡鍏峰濡備笅鑳藉姏锛� - -- 浜掕仈浜掗€氾細鎵撻€氫簡 gRPC 鍜� Spring Cloud 鐢熸€侊紱 - -- 鍙娴嬫€э細鍩轰簬 OpenTracing 鍜� Prometheus锛屼娇寰楀叾鍦� Logging銆乀racing 鍜� Metrics 鏂归潰鏈変簡闀胯冻杩涙锛� - -- 浜戝師鐢燂細Dubbo-go 瀹炵幇浜嗗熀浜� Kubernetes API Server 涓烘敞鍐屼腑蹇冪殑閫氫俊鑳藉姏锛屽仛鍒颁簡鍗囩骇鎴愭湰鏈€浣庛€� - -姣嬪焊璁宠█锛岀浉杈冧簬鐜版湁鎴愮哗锛屽彂灞曢樁娈电殑 Dubbo-go 瀵规湭鏉ユ湁鏇村鐨勬湡寰呬箣澶勶細 - -- 鏄撶敤鎬э細Dubbo-go 鐨勫叆闂ㄦ垚鏈苟涓嶄綆锛屾妸寰堝鎰熷叴瓒h€呮尅鍦ㄤ簡闂ㄥ銆備絾濂芥秷鎭槸锛岄殢鐫€ Dubbo-go 鍦ㄩ樋閲屽唴閮ㄧ殑閫愭鎺ㄥ紑锛岄樋閲屼腑闂翠欢鍥㈤槦瀵瑰叾杩涜浜嗚繘涓€姝ョ殑灏佽锛岀粡鐢熶骇鐜妫€楠屽悗浼氬紑鏀剧粰绀惧尯浣跨敤銆� - -- 浜戝師鐢燂細鐩墠鐨� Dubbo-go 鐨勫熀浜� kubernetes 鐨勬柟妗堬紝浠庢妧鏈垎灞傝搴︽潵鐪嬶紝 Kubernetes API Server 缁堢┒鏄郴缁熺殑杩愮淮鎬佺粍浠讹紝涓嶅簲璇ユ毚闇茬粰搴旂敤灞傦紝鍚﹀垯浼氶€犳垚 APIServer 鑷韩閫氫俊鍘嬪姏杩囧ぇ锛屼笖绯荤粺鏁翠綋椋庨櫓寰堥珮锛氬簲鐢ㄥ眰浣跨敤涓嶅綋锛屾垨鑰呮鏋惰嚜韬殑娴侀噺鏂归潰鐨� bug锛屽彲鑳戒細鎶� APiServer 鎵撳灝锛屽悗鏋滃氨鏄€犳垚鏁翠綋鍚庣鏈嶅姟鑳藉姏鐨勭槴鐥紒鎵€浠ュ簲鐢ㄥ眰闇€瑕佹劅鐭ョ殑鏄� kubernetes 鎻愪緵缁欏簲鐢ㄥ眰鐨� Operator锛屼笉鏂繘鍖栫殑 Dubbo-go 璁″垝鍦� v1.6 鐗堟湰涓彂甯� Dubbo-go Operator銆� - -闆勫叧婕亾鐪熷閾侊紝鑰屼粖杩堟浠庡ご瓒娿€侱ubbo-go 绀惧尯銆愰拤閽夌兢 23331795銆戜笌 Dubbo-go 鍚屽湪銆� - -## 搴旂敤缁村害娉ㄥ唽妯″瀷 - -缁忚繃涓€娈垫椂闂寸殑鍔姏涔嬪悗锛屾垜浠粓浜庡畬鎴愪簡搴旂敤缁村害鐨勬湇鍔℃敞鍐屼笌鍙戠幇銆傚拰鍘熸湰宸叉湁鐨勬帴鍙g淮搴︾殑娉ㄥ唽妯″瀷姣旇捣鏉ワ紝鏂扮殑娉ㄥ唽妯″瀷鏈変袱涓獊鍑虹壒鐐癸細 - -- 1.鍜屼富娴佺殑娉ㄥ唽妯″瀷淇濇寔涓€鑷淬€傜洰鍓嶇殑涓绘祦鍋氭硶閮芥槸鎸夌収搴旂敤涓哄熀鏈崟浣嶆潵杩涜娉ㄥ唽鐨勶紝濡� Spring Cloud銆傚湪鏀寔搴旂敤缁村害娉ㄥ唽涔嬪悗锛屽浜庢帴涓嬫潵鐨勪簯鍘熺敓鏀寔锛屽瀹氫簡鍩虹锛� - -- 2.澶у箙搴﹀噺杞诲娉ㄥ唽涓績鐨勫帇鍔涖€傚湪璇ユā鍨嬩箣涓嬶紝浠庢敞鍐屼腑蹇冪殑瑙嗚鐪嬭繃鍘伙紝闆嗙兢瑙勬ā鍙拰瀹炰緥鏁伴噺鎴愭姣旓紝鑰屼笉鏄幇鏈夌殑鍜屾湇鍔℃暟閲忔垚姝f瘮锛� - -褰撶劧锛屾垜浠湪璁捐鐨勬椂鍊欏氨鑰冭檻鍒颁簡鐢ㄦ埛鐨勮縼绉绘垚鏈€傝杩佺Щ鍒版柊鐨勬敞鍐屾ā鍨嬶紝鍙渶瑕佸皢鐜版湁浣跨敤鐨勬敞鍐屼腑蹇冩崲鎴愭柊鐨� `ServiceDiscoveryRegistry` 灏卞彲浠ャ€� - -ServiceDiscoveryRegistry 鏄敮鎸佸绉嶅疄鐜扮殑銆傜洰鍓嶆潵璇达紝鎴戜滑鏀寔锛� - -- nacos; - -- etcd; - -- zookeeper; - -鎴戜滑鎻愬€℃柊涓婄嚎鐨勪笟鍔″敖閲忎娇鐢� nacos 鍜� etcd 杩欑鏇村彲闈犵ǔ瀹氱殑娉ㄥ唽涓績銆� - -## Metadata Report 鍏冩暟鎹腑蹇� - -v1.5 鐗堟湰鍦ㄦ敮鎸佸簲鐢ㄧ淮搴︽敞鍐屾ā鍨嬫椂锛屾湁寰堥噸瑕佺殑涓€涓棶棰橀渶瑕佽В鍐筹紝鍗虫帴鍙g淮搴︾殑鍏冩暟鎹瓨鍌ㄣ€傛湇鍔$淮搴︾殑娉ㄥ唽妯″瀷鍜屽簲鐢ㄧ淮搴︾殑娉ㄥ唽妯″瀷锛屾湰璐ㄧ殑鍖哄埆鏄線娉ㄥ唽涓績娉ㄥ唽鐨勬暟鎹淮搴︾殑涓嶄竴鑷淬€傝櫧鐒舵垜浠湪搴旂敤缁村害娉ㄥ唽妯″瀷涓紝灏嗘帴鍙g淮搴︾殑鏁版嵁浠庢敞鍐屼腑蹇冧腑鍓旈櫎浜嗭紝浣嗘槸鍦� rpc 鐨勬鏋朵腑锛屼竴涓� consumer 瑕佹兂鐪熸鎵惧埌鎯宠璋冪敤鐨勬湇鍔″湴鍧€锛屽氨蹇呴』寰楀埌 provider 绔紑鏀剧殑鏈嶅姟淇℃伅銆傝繖閮ㄥ垎鏁版嵁锛屽湪 v1.5 鐗堟湰涓紝鎴戜滑灏嗗畠浠瓨鍌ㄥ埌浜嗗厓鏁版嵁涓績涓€� - -鍏冩暟鎹腑蹇冿紝鏄竴涓帴鍙e畾涔夈€傛硾鎸囦竴鍧楀瓨鍌ㄥ尯鍩燂紝鍙互瀵规帴鍙g骇鍒殑鍏冩暟鎹繘琛屽瓨鍌ㄣ€佽鍙栵紝provider 绔皟鐢ㄥ瓨鍌紝consumer 绔皟鐢ㄨ鍙栥€傚厓鏁版嵁涓績涓殑鏁版嵁闇€瑕佷繚鎸佸噯纭€с€佸疄鏃舵€с€� - -鐩墠鍏冩暟鎹腑蹇冿紝鏈変袱涓埗绫伙紙Go 涓病鏈夌户鎵匡紝姝ゅ璇寸殑鐖跺瓙绫伙紝鍗曠函鎸囧瓙绫诲鐖剁被鐨勭粍鍚堝叧绯伙級瀹炵幇锛屼竴涓槸 local 瀹炵幇锛屼竴涓槸 remote 瀹炵幇銆俵ocal 瀹炵幇鏄皢 provider 鐨勫唴瀛樹綔涓鸿櫄鎷熷厓鏁版嵁涓績锛宺emote 瀹炵幇鏄寚渚濊禆 ZooKeeper銆乪tcd銆乶acos 绛夋敞鍐屼腑蹇冧綔涓哄厓鏁版嵁涓績銆傜洰鍓� remote 鏈� zookeeper銆乶acos銆乪tcd 鍜� consul 鐨勫瓙绫诲疄鐜般€傚嵆鐢ㄦ埛鍙互灏嗗厓鏁版嵁淇℃伅锛岄€氳繃浠ヤ笂鐨勭涓夋柟娉ㄥ唽涓績杩涜鏁版嵁瀛樺偍鍜屽垎鍙戙€� - -## Invocation 鎺ュ彛鏀寔 attribute 灞炴€� - -invocation 缁撴瀯涓柊澧� attribute 灞炴€ф敮鎸侊紝鐢ㄤ簬娴佺▼鍐呴儴鐨勫睘鎬у瓨鍌ㄣ€傚拰 attachment 涓嶅悓鐐瑰湪浜庯紝attachment 浼氫粠 consumer 浼犻€掑埌 provider锛屼絾 attribute 灞炴€т笉浼氥€� - -## k8s 娉ㄥ唽涓績 - -鍦� v1.5 鐗堟湰涔嬪墠锛宬8s 娉ㄥ唽涓績鐨勫疄鐜版槸閫氳繃鐩存帴浣跨敤 k8s client 涓� Pod 瀵硅薄鐨� List&&Watch 鎺ュ彛銆傚湪鏈杩唬涓紩鍏ヤ簡 k8s informer銆傝繖鏍峰仛鐨勫師鍥犲湪浜庝袱鐐癸紝棣栧厛涓€瀹氱殑绋嬪害涓婃潵璁� dubbo-go 鐨� k8s 娉ㄥ唽涓績涔熸槸涓€涓� k8s controller锛屼娇鐢� informer 鐨勬ā寮忔洿鍔� k8s native銆傛洿閲嶈鐨勬槸绀惧尯璁″垝鍚庣画鍚� CRD+Operator 鐨勬ā寮忔紨杩涳紝informer 妯″紡鏄鍚庣画鐨勬紨杩涚殑鎺㈢储銆傞櫎浜嗚繖涓摵鍨箣澶栵紝鏈杩唬杩樺璺� namespace 鐨勬湇鍔″彂鐜板仛浜嗘敮鎸併€傚啀鏈夊氨鏄负浜嗗噺灏戝 kube-apiserver List&&Watch 鐨勫帇鍔涳紝瀵� provider 鍜� consumer 鐨勮涓鸿繘琛屼簡鍖哄垎锛宲rovider 涓嶅啀杩涜 Watch 鑰屼粎瀵� kube-apiserver 杩涜鍐欐搷浣溿€� - -## 浼樺寲璺敱妯″瀷 - -鍦� 1.5 鐗堟湰涔嬪墠锛孯outer 妯″瀷涓睘鎬ф槸鍖呭惈锛氫紭鍏堢骇涓庤矾鐢卞睘鎬э紝Router Chain 鍙寘鍚矾鐢卞睘鎬с€備粠涓兘璇嗗埆鍑哄叾瀹� Router Chain 涔熸槸涓€绉嶇壒娈� Router銆�1.5 鐗堟湰涔嬪悗锛屼娇 Router 鏇存娊璞★紝鍒嗙鍑哄叾浼樺厛绾у睘鎬э紝鏂板 Priority Router銆丆hain 缁ф壙 Router 浣垮叾鍙樹负鐗规畩鐨� Router锛屼娇鍏崇郴涓婄湅璧锋潵鏇村姞娓呮櫚銆傚涓嬪浘锛� - - - -## 鍥為【涓庡睍鏈� - -Dubbo-go 澶勪簬涓€涓瘮杈冪ǔ瀹氭垚鐔熺殑鐘舵€併€傜洰鍓嶆柊鐗堟湰姝e浜庡線浜戝師鐢熸柟鍚戠殑灏濊瘯锛屽簲鐢ㄦ湇鍔$淮搴︽敞鍐屾槸棣栧厛鎺ㄥ嚭鐨勫姛鑳斤紝杩欐槸涓€涓拰涔嬪墠妯″瀷瀹屽叏涓嶄竴鏍风殑鏂版敞鍐屾ā鍨嬨€傝鐗堟湰鏄垜浠湞浜戝師鐢熻繄杩涙柊涓€姝ョ殑鍏抽敭鐗堟湰銆傞櫎姝や箣澶栵紝鍖呭惈鍦ㄨ鐗堟湰涔熸湁涓€浜涗箣鍓嶆彁鍒扮殑浼樺寲銆� - -涓嬩竴涓増鏈� v1.5.1锛岃櫧鐒朵粛鏄互鍏煎 Dubbo 2.7.x 涓轰富瑕佷换鍔★紝浣嗗湪鍒嗗竷寮忚兘鍔涚殑澧炲己涓婏紝涔熸槸鎴戜滑鍏虫敞鐨勯噸鐐广€� - -鍦ㄥ垎甯冨紡浜嬪姟鏂归潰锛屾湁涓€涓噸瑕佺殑鍩轰簬 Seata 鎵╁睍瀹炵幇銆傞€氳繃澧炲姞杩囨护鍣紝鍦ㄦ湇鍔$鎺ユ敹 xid 骞剁粨鍚� seata-golang[2] 杈惧埌鏀寔鍒嗗竷寮忎簨鍔$殑鐩殑銆� 浠庤€屼娇 Dubbo-go 鍦ㄥ垎甯冨紡鍦烘櫙涓嬶紝璁╃敤鎴锋湁鏇村鐨勯€夋嫨锛岃兘閫傚簲鏇村鐨勪釜鎬у寲鍦烘櫙銆� - -涓庢鍚屾椂锛屽湪浼犺緭閾捐矾瀹夊叏鎬т笂锛孴LS 瀹夊叏浼犺緭閾捐矾鏄鐗堟湰閲嶈鍔熻兘涔嬩竴銆傞€氳繃鎻愪緵缁熶竴鍏ュ彛锛屾湭鏉ヨ兘寮曞叆鏇村鐨勪笌浼犺緭閾捐矾瀹夊叏鎬х浉鍏崇殑鍔熻兘锛岄€傚簲鐢ㄦ埛涓嶄竴鏍风殑浣跨敤鍦烘櫙銆� - -娉ㄥ唽涓績妯″瀷涓婏紝鏀寔澶氭敞鍐屼腑蹇冮泦缇よ礋杞藉潎琛°€備笟鍔¢儴缃插亣璁炬槸鍙屾敞鍐屼腑蹇冿紙鍥� 1 锛夛紝浠庡師鏉ュ弻娉ㄥ唽涓績涓墍鏈� Provider 涓€璧烽€夊潃銆備紭鍖栨垚閫夊潃鏃剁殑澶氫簡涓€灞傛敞鍐屼腑蹇冮泦缇ら棿鐨勮礋杞藉潎琛★紙鍥� 2 锛夈€� - - - -锛堝浘 1 锛� - - - -锛堝浘 2 锛� - -浠ュ墠鐨� dubbo-go RPC 灞傜洿鎺ュ鐢ㄤ簡 getty 妗嗘灦 鐨� RPC[3]锛屾湭鑳藉疄鐜板崗璁拰搴旂敤閫氫俊鍦板潃鐨勯殧绂汇€傞樋閲屼腑闂翠欢灞曞浘鍚屽閲嶆瀯浜� dubbo-go RPC 灞傦紝瀹炵幇浜嗚繛鎺ュ鐢細鍙互瀹炵幇 consumer 涓� provider 绔殑鍚屼竴涓� TCP 杩炴帴涓婅繘琛屽鍗忚閫氫俊銆傜浉鍏� PR 涓氬凡鍚堝苟锛屼細鍦� dubbo-go v1.5.1 涓彂甯冦€� - -鐩墠涓嬩竴涓増鏈鍦ㄧ揣閿e瘑榧撶殑寮€鍙戜腑锛屽叿浣撹鍒掑強浠诲姟娓呭崟[1] 锛岄兘宸茬粡鍦� Github 涓婁綋鐜般€� - -[1] : https://github.com/apache/dubbo-go/projects/8 - -[2] : https://github.com/seata-golang/seata-golang - -[3]: https://github.com/AlexStocks/getty/tree/master/rpc diff --git a/doc/md/practice/dubbo-go-experience.md b/doc/md/practice/dubbo-go-experience.md deleted file mode 100644 index 5ee1d6db53dff6445ab6a287b09159540f64434a..0000000000000000000000000000000000000000 --- a/doc/md/practice/dubbo-go-experience.md +++ /dev/null @@ -1,199 +0,0 @@ -# [dubbo-go 韪╁潙璁癩(https://dubbogo.github.io/dubbo-go-website/zh-cn/blog/dubbo-go-experience.html) - -## 鎵贰 - -### 鍓嶅皹 - -鐢变簬鎴戠殑涓€涓」鐩渶瑕佸仛鍏徃鐢ㄦ埛閴存潈锛岃€岀粍鍐呭叾浠栧皬浼欎即鍒氬ソ鏈変竴涓� _dubbo_ 鐨勯壌鏉� _rpc_ 锛屼竴寮€濮嬫垜鏄墦绠楃洿鎺ョ殑璇� _redis_ 鏁版嵁鐒跺悗鑷繁鍋氳В瀵嗐€傚伐浣滆繘琛屽埌涓€鍗婏紝鐢变簬鑰冭檻鍒板鏋滀互鍚庤繖涓湇鍔℃湁浠讳綍鍙樺姩锛屾垜杩欒竟瑕佹湁鑱斿姩琛屼负锛屾墍浠ユ敼鐢� _go_ 鏉ヨ皟鐢� _dubbo_ 鐨� _rpc_ 锛屼簬鏄垜鍦� _github_ 涓婃壘鍒颁簡 [闆ㄧ](https://github.com/AlexStocks) 鐨� [dubbogo](https://github.com/AlexStocks/dubbogo) (PS: 杩欎釜鏄� _dubbo-go_ 鍓嶈韩)銆備笉寰椾笉璇达紝闆ㄧ鏄儹蹇冪殑浜哄効鍟婏紝褰撴椂杩樺府鐫€鎴戣皟璇曚唬鐮併€傛渶鍚庝篃鏄帴鍏ヤ簡涓€涓槈鍓茬増鐨勫惂锛屼富瑕佹槸褰撴椂 _hessian2_ 瀵规硾鍨嬫敮鎸佺殑涓嶆€庝箞濂姐€� - -### 鐜板湪 - -鐩墠 [dubbo-go](https://github.com/apache/dubbo-go)闅跺睘浜� _apache_ 绀惧尯锛岀浉姣斾互鍓嶅仛浜嗛儴鍒嗛噸鏋勶紝骞朵笖缁存姢涔熷緢娲昏穬浜嗐€� - -## 鎺ュ叆 - -### 闂 - -鐩墠鏁翠釜椤圭洰鍦ㄥ揩閫熺殑杩唬涓紝寰堝鍔熻兘杩樻病鏈夊畬鍠勶紝缁存姢浜哄憳杩樻病鏈夋椂闂存潵瀹屽杽鏂囨。锛屾墍浠ュ湪鎺ュ叆鐨勬椂鍊欒鑷繁鐪嬫簮鐮佹垨璋冭瘯銆� - -### 璇存槑 - -鐩墠鎴戝徃鍦ㄤ娇鐢� _dubbo_ 鐨勮繃绋嬩娇鐢ㄧ殑 _zookeeper_ 浣滀负娉ㄥ唽涓績锛屽簭鍒楀寲鏄� _hessian2_ 锛屾墍浠ユ垜浠鍋氬涓嬪垵濮嬪寲锛� - -```go - import ( - _ "github.com/apache/dubbo-go/common/proxy/proxy_factory" - _ "github.com/apache/dubbo-go/registry/protocol" - - _ "github.com/apache/dubbo-go/filter/impl" - - _ "github.com/apache/dubbo-go/cluster/cluster_impl" - _ "github.com/apache/dubbo-go/cluster/loadbalance" - _ "github.com/apache/dubbo-go/registry/zookeeper" - ) -``` - -### 閰嶇疆 - -鐢变簬鎴戞槸鎺ュ叆瀹㈡埛绔紝鎵€浠ユ垜杩欒竟鍙厤缃簡 _ConsumerConfig_ 銆� - -```yaml -dubbo: - # client - request_timeout: "3s" - # connect timeout - connect_timeout: "3s" - check: true - application: - organization: "dfire.com" - name: "soa.sso.ITokenService" - module: "dubbogo token service client" - version: "1.0.0" - owner: "congbai" - registries: - "hangzhouzk": - protocol: "zookeeper" - timeout: "3s" - address: "zk1.2dfire-daily.com:2181" - username: "" - password: "" - references: - "ITokenService": - registry: "hangzhouzk" - protocol: "dubbo" - interface: "com.dfire.soa.sso.ITokenService" - version: "1.0.0" - methods: - - name: "validate" - retries: "3" -``` - -鎴戣繖閲屾槸鎶� _dubbo-go_ 浣滀负绗笁鏂瑰簱鏉ョ敤锛屾墍浠ユ垜娌′娇鐢ㄥ畼鏂� [dubbo-samples](https://github.com/dubbogo/dubbo-samples/golang) 閭f牱鍦� _init_ 鍑芥暟涓鍏ラ厤缃€� - -閰嶇疆浠g爜濡備笅锛� - -```go - import ( - "github.com/apache/dubbo-go/config" - "github.com/apache/dubbo-go/protocol/dubbo" - ) - - type DubboCli struct { - } - - func NewCli(cconf config.ConsumerConfig) *DubboCli { - config.SetConsumerConfig(cconf) - - dubbo.SetClientConf(dubbo.GetDefaultClientConfig()) - - config.Load() - - return &DubboCli{} - } -``` - -### 鎺ュ叆 - -濂戒簡锛岄厤缃姞杞藉畬灏辫鏄庢垜浠殑鍑嗗宸ヤ綔宸茬粡鍋氬ソ浜嗭紝鎺ヤ笅鏉ュ氨瑕佹帴鍏� _rpc_ 鎺ュ彛浜嗐€� - -#### 杩斿洖鍊� - -涓€鑸� _rpc_ 璋冪敤鐨勮繑鍥炲€奸兘鏄嚜瀹氫箟鐨勶紝鎵€浠ユ垜浠篃瑕佸憡璇� _dubbo-go_ 闀夸粈涔堟牱瀛愩€傝繖涓粨鏋勪綋瑕佽窡 _java_ 鐨勭被瀵瑰簲璧锋潵锛岃繖閲屾垜浠槸瑕佸疄鐜� _hessian2_ 鐨� _interface_ : - -```go -// POJO interface -// !!! Pls attention that Every field name should be upper case. -// Otherwise the app may panic. -type POJO interface { - JavaClassName() string // got a go struct's Java Class package name which should be a POJO class. -} -``` - -鎴戠殑瀹炵幇濡備笅锛� - -```go -type Result struct { - Model interface{} `json:"model,omitempty"` - Models []interface{} `json:"models,omitempty"` - ResultCode string `json:"resultCode"` - Success bool `json:"success"` - Message string `json:"message"` - TotalRecord int `json:"totalRecord"` -} - -func (r Result) JavaClassName() string { - return "com.twodfire.share.result.ResultSupport" -} -``` - -杩欓噷鐨� _JavaClassName_ 鎺ュ彛鐨勬剰涔夊氨濡傚嚱鏁扮鍚嶄竴鏍凤紝杩斿洖鐨勫氨鏄� _java_ 鐨勭被鍚嶃€� - -#### 鎺ュ彛 - -瑕佹兂璋冪敤 _dubbo_ 鐨勬帴鍙e氨蹇呴』瀹炵幇涓嬮潰杩欎釜 _interface_ - -```go -// rpc service interface -type RPCService interface { - Reference() string // rpc service id or reference id -} -``` - -鎵€浠ユ垜闇€瑕佹瀯閫犱竴涓� _struct_ 鏉ュ仛杩欎釜浜嬫儏锛屾瘮濡傦細 - -```go -type ITokenService struct { - Validate func(ctx context.Context, req []interface{}, resp *Result) error `dubbo:"validate"` -} - -func (i *ITokenService) Reference() string { - return "ITokenService" -} -``` - -杩欎釜缁撴瀯浣撲竴鑸槸涓嶄細鏈変粈涔堟暟鎹垚鍛樸€� - -杩欓噷鎴戜滑娉ㄦ剰鍒� _Validate_ 鍑芥暟澹版槑鍚庨潰璺熺殑 _dubbo tag_ 锛岃繖涓槸涓哄鏋� _rpc_ 鍚嶇О鐨勯瀛楁瘝鏄皬鍐欙紙姣斿鎴戣璋冪敤鐨� _dubbo_ 鎺ュ彛灏辨槸 _validate_ )鍑嗗鐨� _MethodMapper_ 锛岀被浼间簬 _json_ 鐨勬槧灏� _tag_ 鍔熸晥銆備竴寮€濮嬫垜灏辨槸閬囧埌杩欎釜鍧戯紝鎴戞寜瀹樻柟鐨勪緥瀛愬疄鐜帮紝鏃ュ織涓€鐩磋鎵句笉鍒版帴鍙o紝鍚庢潵鎴戜篃鍦ㄥ畼鏂圭兢閲岃闂ぇ浣墠鐭ラ亾鏈夎繖涓姛鑳姐€� - -#### 娉ㄥ唽 - -濂戒簡锛屼笂闈㈢殑鍑嗗鍏ㄩ儴瀹屾垚鍚庯紝鎴戜滑瑕佸仛鏈€鍚庝竴姝ワ紝閭e氨鏄憡璇� _dubbo-go_ 鎴戜滑鎯宠鐨勬槸浠€涔堛€備唬鐮佸涓嬶細 - -```go - import ( - hessian "github.com/apache/dubbo-go-hessian2" - "github.com/apache/dubbo-go/config" - ) - - var tokenProvider = new(ITokenService) - - func init() { - config.SetConsumerService(tokenProvider) - hessian.RegisterPOJO(&Result{}) - } -``` - -#### 璋冪敤 - -鎺ヤ笅鏉ユ垜浠氨鍙互瀹屾垚鎴戜滑鐨� _DubboCli_ 鎺ュ彛浜嗭紝浠g爜濡備笅锛� - -```go -func (d *DubboCli) CheckUser(token, app string) (bool, error) { - args := []interface{}{token, app} - resp := &Result{} - - if err := tokenProvider.Validate(context.Background(), args, resp); err != nil { - return false, err - } - if resp.Success { - return resp.Success, nil - } - return resp.Success, errors.New(resp.Message) -} -``` - -濂戒簡锛岃嚦姝ゆ垜浠氨瀹屾垚浜� _dubbo-go_ 鐨勫叏閮ㄦ帴鍏ュ伐浣溿€� Happy Coding... - -## 鍐欏湪鏈€鍚� - -鍏跺疄浠g爜鏍煎紡杩欎釜闂锛屾垜鍦ㄦ帴鍏ョ殑鏃跺€欒窡瀹樻柟缇ら噷鐨勭淮鎶よ€呭ぇ浣彁杩囷紝浣跨敤 _go_ 瀹樻柟鐨勪唬鐮佹牸寮忓伐鍏� [goimports](https://github.com/golang/tools/tree/master/cmd/goimports) 鏉ョ粺涓€浠g爜鏍煎紡锛岃繖 鏍峰浜庣淮鎶よ€呬互澶栫殑浜烘彁 _PR_ 涔熸槸鏈夊埄銆傛垜鍦ㄦ帴鍏ョ殑杩囩▼涓亣鍒颁竴涓� _bug_ 锛屾垜鍙嶉缁欓洦绁烇紝浠栧氨璁╂垜鎻愪簡涓� _PR_ 锛屽湪鏁翠釜杩囩▼灏辨槸杩欎釜 浠g爜鏍煎紡鐨勯棶棰橈紝瀵艰嚧鎴戝弽澶嶇殑淇敼浠g爜銆� \ No newline at end of file diff --git a/doc/md/practice/dubbo-go-quick-start.md b/doc/md/practice/dubbo-go-quick-start.md deleted file mode 100644 index 69482f7d05e07baf28533d01c19ca5e11105c935..0000000000000000000000000000000000000000 --- a/doc/md/practice/dubbo-go-quick-start.md +++ /dev/null @@ -1,197 +0,0 @@ -# [蹇€熷紑濮媇(https://dubbogo.github.io/dubbo-go-website/zh-cn/docs/user/quick-start.html) - -閫氳繃涓€涓� `hellowworld` 渚嬪瓙甯﹂澶у蹇€熶笂鎵婦ubbo-go妗嗘灦銆� - -鍗忚锛欴ubbo -缂栫爜锛欻essian2 -娉ㄥ唽涓績锛歓ookeeper - -## 鐜 - -* Go缂栫▼鐜 -* 鍚姩zookeeper鏈嶅姟锛屼篃鍙互浣跨敤杩滅▼瀹炰緥 - -## 浠庢湇鍔$寮€濮� - -### 绗竴姝ワ細缂栧啓 `Provider` 缁撴瀯浣撳拰鎻愪緵鏈嶅姟鐨勬柟娉� - -> [https://github.com/dubbogo/dubbo-samples/blob/master/golang/helloworld/dubbo/go-server/app/user.go](https://github.com/dubbogo/dubbo-samples/blob/master/golang/helloworld/dubbo/go-server/app/user.go) - -1. 缂栧啓闇€瑕佽缂栫爜鐨勭粨鏋勪綋锛岀敱浜庝娇鐢� `Hessian2` 浣滀负缂栫爜鍗忚锛宍User` 闇€瑕佸疄鐜� `JavaClassName` 鏂规硶锛屽畠鐨勮繑鍥炲€煎湪dubbo涓搴擴ser绫荤殑绫诲悕銆� - -```go -type User struct { - Id string - Name string - Age int32 - Time time.Time -} - -func (u User) JavaClassName() string { - return "com.ikurento.user.User" -} -``` - -2. 缂栧啓涓氬姟閫昏緫锛宍UserProvider` 鐩稿綋浜巇ubbo涓殑涓€涓湇鍔″疄鐜般€傞渶瑕佸疄鐜� `Reference` 鏂规硶锛岃繑鍥炲€兼槸杩欎釜鏈嶅姟鐨勫敮涓€鏍囪瘑锛屽搴攄ubbo鐨� `beans` 鍜� `path` 瀛楁銆� - -```go -type UserProvider struct { -} - -func (u *UserProvider) GetUser(ctx context.Context, req []interface{}) (*User, error) { - println("req:%#v", req) - rsp := User{"A001", "hellowworld", 18, time.Now()} - println("rsp:%#v", rsp) - return &rsp, nil -} - -func (u *UserProvider) Reference() string { - return "UserProvider" -} -``` - -3. 娉ㄥ唽鏈嶅姟鍜屽璞� - -```go -func init() { - config.SetProviderService(new(UserProvider)) - // ------for hessian2------ - hessian.RegisterPOJO(&User{}) -} -``` - -### 绗簩姝ワ細缂栧啓涓荤▼搴� - -> [https://github.com/dubbogo/dubbo-samples/blob/master/golang/helloworld/dubbo/go-server/app/server.go](https://github.com/dubbogo/dubbo-samples/blob/master/golang/helloworld/dubbo/go-server/app/server.go) - -1. 寮曞叆蹇呴渶鐨刣ubbo-go鍖� - -```go -import ( - hessian "github.com/apache/dubbo-go-hessian2" - "github.com/apache/dubbo-go/config" - _ "github.com/apache/dubbo-go/registry/protocol" - _ "github.com/apache/dubbo-go/common/proxy/proxy_factory" - _ "github.com/apache/dubbo-go/filter/impl" - _ "github.com/apache/dubbo-go/cluster/cluster_impl" - _ "github.com/apache/dubbo-go/cluster/loadbalance" - _ "github.com/apache/dubbo-go/registry/zookeeper" - - _ "github.com/apache/dubbo-go/protocol/dubbo" -) -``` - -2. main 鍑芥暟 - -```go -func main() { - config.Load() -} -``` - -### 绗笁姝ワ細缂栧啓閰嶇疆鏂囦欢骞堕厤缃幆澧冨彉閲� - -1. 鍙傝€� [log](https://github.com/dubbogo/dubbo-samples/blob/master/golang/helloworld/dubbo/go-server/profiles/release/log.yml) 鍜� [server](https://github.com/dubbogo/dubbo-samples/blob/master/golang/helloworld/dubbo/go-server/profiles/release/server.yml) 缂栬緫閰嶇疆鏂囦欢銆� - -涓昏缂栬緫浠ヤ笅閮ㄥ垎锛� - -* `registries` 缁撶偣涓嬮渶瑕侀厤缃畓k鐨勬暟閲忓拰鍦板潃 - -* `services` 缁撶偣涓嬮厤缃湇鍔$殑鍏蜂綋淇℃伅锛岄渶瑕侀厤缃� `interface` 閰嶇疆锛屼慨鏀逛负瀵瑰簲鏈嶅姟鐨勬帴鍙e悕锛屾湇鍔$殑key瀵瑰簲绗竴姝ヤ腑 `Provider` 鐨� `Reference` 杩斿洖鍊� - - -2. 鎶婁笂闈㈢殑涓や釜閰嶇疆鏂囦欢鍒嗗埆閰嶇疆涓虹幆澧冨彉閲� - -```shell -export CONF_PROVIDER_FILE_PATH="xxx" -export APP_LOG_CONF_FILE="xxx" -``` - -## 鎺ョ潃鏄鎴风 - -### 绗竴姝ワ細缂栧啓瀹㈡埛绔� `Provider` - -> [https://github.com/dubbogo/dubbo-samples/blob/master/golang/helloworld/dubbo/go-client/app/user.go](https://github.com/dubbogo/dubbo-samples/blob/master/golang/helloworld/dubbo/go-client/app/user.go) - -1. 鍙傝€冩湇鍔$绗竴姝ョ殑绗竴鐐广€� - -2. 涓庢湇鍔$涓嶅悓鐨勬槸锛屾彁渚涙湇鍔$殑鏂规硶浣滀负缁撴瀯浣撶殑鍙傛暟锛屼笉闇€瑕佺紪鍐欏叿浣撲笟鍔¢€昏緫銆傚彟澶栵紝`Provider` 涓嶅搴攄ubbo涓殑鎺ュ彛锛岃€屾槸瀵瑰簲涓€涓疄鐜般€� - - -```go -type UserProvider struct { - GetUser func(ctx context.Context, req []interface{}, rsp *User) error -} - -func (u *UserProvider) Reference() string { - return "UserProvider" -} -``` - -3. 娉ㄥ唽鏈嶅姟鍜屽璞� - -```go -func init() { - config.SetConsumerService(userProvider) - hessian.RegisterPOJO(&User{}) -} -``` - -### 绗簩姝ワ細缂栧啓瀹㈡埛绔富绋嬪簭 - -> [https://github.com/dubbogo/dubbo-samples/blob/master/golang/helloworld/dubbo/go-client/app/client.go](https://github.com/dubbogo/dubbo-samples/blob/master/golang/helloworld/dubbo/go-client/app/client.go) - -1. 寮曞叆蹇呴渶鐨刣ubbo-go鍖� - -```go -import ( - hessian "github.com/apache/dubbo-go-hessian2" - "github.com/apache/dubbo-go/config" - _ "github.com/apache/dubbo-go/registry/protocol" - _ "github.com/apache/dubbo-go/common/proxy/proxy_factory" - _ "github.com/apache/dubbo-go/filter/impl" - _ "github.com/apache/dubbo-go/cluster/cluster_impl" - _ "github.com/apache/dubbo-go/cluster/loadbalance" - _ "github.com/apache/dubbo-go/registry/zookeeper" - - _ "github.com/apache/dubbo-go/protocol/dubbo" -) -``` - -2. main 鍑芥暟 - -```go -func main() { - config.Load() - time.Sleep(3e9) - - println("\n\n\nstart to test dubbo") - user := &User{} - err := userProvider.GetUser(context.TODO(), []interface{}{"A001"}, user) - if err != nil { - panic(err) - } - println("response result: %v\n", user) -} -func println(format string, args ...interface{}) { - fmt.Printf("\033[32;40m"+format+"\033[0m\n", args...) -} -``` - -### 绗笁姝ワ細缂栧啓閰嶇疆鏂囦欢骞堕厤缃幆澧冨彉閲� - -1. 鍙傝€� [log](https://github.com/dubbogo/dubbo-samples/blob/master/golang/helloworld/dubbo/go-client/profiles/release/log.yml) 鍜� [client](https://github.com/dubbogo/dubbo-samples/blob/master/golang/helloworld/dubbo/go-client/profiles/release/client.yml) 缂栬緫閰嶇疆鏂囦欢銆� - -涓昏缂栬緫浠ヤ笅閮ㄥ垎锛� - -* `registries` 缁撶偣涓嬮渶瑕侀厤缃畓k鐨勬暟閲忓拰鍦板潃 - -* `references` 缁撶偣涓嬮厤缃湇鍔$殑鍏蜂綋淇℃伅锛岄渶瑕侀厤缃� `interface` 閰嶇疆锛屼慨鏀逛负瀵瑰簲鏈嶅姟鐨勬帴鍙e悕锛屾湇鍔$殑key瀵瑰簲绗竴姝ヤ腑 `Provider` 鐨� `Reference` 杩斿洖鍊� - - -2. 鎶婁笂闈㈢殑涓や釜閰嶇疆鏂囦欢璐瑰埆閰嶇疆涓虹幆澧冨彉閲忥紝涓洪槻姝og鐨勭幆澧冨彉閲忓拰鏈嶅姟绔殑log鐜鍙橀噺鍐茬獊锛屽缓璁墍鏈夌殑鐜鍙橀噺涓嶈鍋氬叏灞€閰嶇疆锛屽湪褰撳墠璧锋晥鍗冲彲銆� - -```shell -export CONF_CONSUMER_FILE_PATH="xxx" -export APP_LOG_CONF_FILE="xxx" -``` \ No newline at end of file diff --git a/doc/md/registry-center/design-and-implementation-of-dubbo-go-and-k8s-registry.md b/doc/md/registry-center/design-and-implementation-of-dubbo-go-and-k8s-registry.md deleted file mode 100644 index 501ecd855de28f356b55c5d6089ce7508ada377d..0000000000000000000000000000000000000000 --- a/doc/md/registry-center/design-and-implementation-of-dubbo-go-and-k8s-registry.md +++ /dev/null @@ -1,103 +0,0 @@ -# [dubbo-go K8s 娉ㄥ唽涓績鐨勮璁℃柟妗堜笌瀹炵幇](https://mp.weixin.qq.com/s/j6CIZpMrSk4VO27viUlDrg) - -> 闅忕潃浜戝師鐢熺殑鎺ㄥ箍锛岃秺鏉ヨ秺澶氱殑鍏徃鎴栫粍缁囧皢鏈嶅姟瀹瑰櫒鍖栵紝骞跺皢瀹瑰櫒鍖栧悗鐨勬湇鍔¢儴缃插湪 K8s 闆嗙兢涓€� - -- 浠婂ぉ杩欑瘒鏂囩珷灏嗕細浠嬬粛 dubbo-go 灏� K8s 浣滀负鏈嶅姟娉ㄥ唽涓績鐨勬柟妗堣璁★紝浠ュ強鍏蜂綋瀹炵幇銆傚埌鐩墠涓烘璇ユ柟妗堢殑瀹炵幇宸茬粡琚悎骞跺埌 dubbo-go 鐨� master 鍒嗘敮銆傚叿浣撳疄鐜颁负鍏充簬 Kubernetes 鐨� PullRequest 銆� - Kubernetes 鐨� PullRequest锛� - https://github.com/apache/dubbo-go/pull/400 - -## K8s 绠$悊璧勬簮鐨勫摬瀛� - -K8s 浣滀负瀹瑰櫒闆嗙兢鍖栫鐞嗘柟妗堝彲浠ュ皢绠$悊璧勬簮鐨勭淮搴﹀彲涓昏鐨勫垎涓烘湇鍔″疄渚嬬鐞嗗拰鏈嶅姟鎺ュ叆绠$悊銆� - -1. 鏈嶅姟瀹炰緥绠$悊锛屼富瑕佷綋鐜版柟寮忎负 Pod 璁捐妯″紡鍔犳帶鍒跺櫒妯″紡銆傛帶鍒跺櫒淇濊瘉鍏锋湁鐗瑰畾鏍囩锛圠abel锛夌殑 Pod 淇濇寔鍦ㄦ亽瀹氱殑鏁伴噺锛堝鍒狅紝灏戣ˉ锛夈€� - -2. 鏈嶅姟鎺ュ叆绠$悊锛屼富瑕佷负 Service 锛岃 Service 榛樿涓哄叿鏈夌壒瀹氭爣绛撅紙Label锛夌殑涓€鎵� Pod 鎻愪緵涓€涓� VIP锛圕lusterIP锛変綔涓烘湇鍔$殑鎺ュ叆鐐癸紝榛樿浼氭寜鐓� round-robin 鐨勮礋杞藉潎琛$瓥鐣ュ皢璇锋眰杞彂鍒扮湡姝f彁渚涙湇鍔$殑 Pod 銆傚苟涓� CoreDNS 涓鸿 Service 鎻愪緵闆嗙兢鍐呭敮涓€鐨勫煙鍚嶃€� - -## K8s 鏈嶅姟鍙戠幇妯″瀷 - -涓轰簡鏄庣‘ K8s 鍦ㄦ湇鍔℃帴鍏ョ鐞嗘彁渚涚殑瑙e喅鏂规锛屾垜浠互 kube-apiserver 鎻愪緵鐨� API(HTTPS) 鏈嶅姟涓轰緥銆侹8s 闆嗙兢涓鸿鏈嶅姟鍒嗛厤浜嗕竴涓泦缇ゅ唴鏈夋晥鐨� ClusterIP 锛屽苟閫氳繃 CoreDNS 涓哄叾鍒嗛厤浜嗗敮涓€鐨勫煙鍚� kubernetes 銆傚鏋滈泦缇ゅ唴鐨� Pod 闇€瑕佽闂鏈嶅姟鏃剁洿鎺ラ€氳繃 https://kubernetes:443 鍗冲彲瀹屾垚銆� - - - -鍏蜂綋娴佺▼濡備笂鍥炬墍绀�(绾㈣壊涓哄鎴风锛岀豢鑹蹭负 kube-apiserver )锛� - -1. 棣栧厛瀹㈡埛绔€氳繃 CoreDNS 瑙f瀽鍩熷悕涓� Kubernetes 鐨勬湇鍔¤幏寰楀搴旂殑 ClusterIP 涓� 10.96.0.1 銆� - -2. 瀹㈡埛绔悜 10.96.0.1 鍙戣捣 HTTPS 璇锋眰銆� - -3. HTTPS 涔嬩笅鐨� TCP 杩炴帴琚� kube-proxy 鍒涘缓鐨� iptables 鐨� PREROUTING 閾炬嫤鎴苟 DNAT 涓� 10.0.2.16 鎴� 10.0.2.15 銆� - -4. Client 涓庢渶缁堟彁渚涙湇鍔$殑 Pod 寤虹珛杩炴帴骞朵氦浜掋€� - -鐢辨鍙锛孠8s 鎻愪緵鐨勬湇鍔″彂鐜颁负鍩熷悕瑙f瀽绾у埆銆� - -## Dubbo 鏈嶅姟鍙戠幇妯″瀷 - -鍚屾牱涓轰簡鏄庣‘ Dubbo 鏈嶅姟鍙戠幇鐨勬ā鍨嬶紝浠ヤ竴涓畝鍗曠殑 Dubbo-Consumer 鍙戠幇骞惰闂� Provider 鐨勫叿浣撴祦绋嬩负渚嬨€� - -鍏蜂綋娴佺▼濡備笂鍥炬墍绀猴細 - -1.Provider 灏嗘湰杩涚▼鐨勫厓鏁版嵁娉ㄥ唽鍒� Registry 涓紝鍖呮嫭 IP锛孭ort锛屼互鍙婃湇鍔″悕绉扮瓑銆� -2.Consumer 閫氳繃 Registry 鑾峰彇 Provider 鐨勬帴鍏ヤ俊鎭紝鐩存帴鍙戣捣璇锋眰銆� - -鐢辨鍙锛孌ubbo 褰撳墠鐨勬湇鍔″彂鐜版ā鍨嬫槸閽堝 Endpoint 绾у埆鐨勶紝骞朵笖娉ㄥ唽鐨勪俊鎭笉鍙� IP 鍜岀鍙h繕鍖呮嫭鍏朵粬鐨勪竴浜涘厓鏁版嵁銆� - -## K8s service vs dubbo-go 鏈嶅姟 - -閫氳繃涓婅堪涓や釜灏忚妭锛岀瓟妗堝熀鏈凡缁忔瘮杈冩竻鏅颁簡銆傛€荤粨涓€涓嬶紝鏃犳硶鐩存帴浣跨敤 K8s 鐨勬湇鍔″彂鐜版ā鍨嬬殑鍘熷洜涓昏涓轰互涓嬪嚑鐐�: - -1.K8s 鐨� Service 鏍囧噯鐨勮祫婧愬璞″叿鏈夌殑鏈嶅姟鎻忚堪瀛楁 涓苟鏈彁渚涘畬鏁寸殑 Dubbo 杩涚▼鍏冩暟鎹瓧娈靛洜姝わ紝鏃犳硶鐩存帴浣跨敤璇ユ爣鍑嗗璞¤繘琛屾湇鍔℃敞鍐屼笌鍙戠幇銆� -2.dubbo-go 鐨勬湇鍔℃敞鍐屾槸鍩轰簬姣忎釜杩涚▼鐨勶紝姣忎釜 Dubbo 杩涚▼鍧囬渶杩涜鐙珛鐨勬敞鍐屻€� -3.K8s 鐨� Service 榛樿涓烘湇鍔″垱寤� VIP 锛屾彁渚� round-robin 鐨勮礋杞界瓥鐣ヤ篃涓� Dubbo-go 鑷湁鐨� Cluster 妯″潡鐨勮礋杞界瓥鐣ュ舰鎴愪簡鍐茬獊銆� - -## Dubbo-go 褰撳墠鐨勬柟妗� - -### 鏈嶅姟娉ㄥ唽 - -K8s 鍩轰簬 Service 瀵硅薄瀹炵幇鏈嶅姟娉ㄥ唽/鍙戠幇銆傚彲鏄� dubbo 鐜版湁鏂规涓烘瘡涓� dubbo-go 杩涚▼鐙珛娉ㄥ唽锛屽洜姝� dubbo-go 閫夋嫨灏嗚杩涚▼鍏锋湁鐨勭嫭鏈夌殑鍏冩暟鎹啓鍏ヨ繍琛岃 dubbo-go 杩涚▼鐨� Pod 鍦� K8s 涓殑 Pod 璧勬簮瀵硅薄鐨勬弿杩颁俊鎭腑銆� - -姣忎釜杩愯 dubbo 杩涚▼鐨� Pod 灏嗘湰杩涚▼鐨勫厓鏁版嵁鍐欏叆 Pod 鐨� Annotations 瀛楁銆備负浜嗛伩鍏嶄笌鍏朵粬浣跨敤 Annotations 瀛楁鐨� Operator 鎴栬€呭叾浠栫被鍨嬬殑鎺у埗鍣紙istio锛夌殑瀛楁鍐茬獊銆� - -dubbo-go 浣跨敤 Key 涓� dubbo.io/annotation value 涓哄叿浣撳瓨鍌ㄧ殑 K/V 瀵圭殑鏁扮粍鐨� json 缂栫爜鍚庣殑 base64 缂栫爜銆� - -鏍蜂緥涓猴細 - -```yaml -apiVersion: v1 -kind: Pod -metadata: - annotations: - dubbo.io/annotation: W3siayI6Ii9kdWJibyIsInYiOiIifSx7ImsiOiIvZHViYm8vY29tLmlrdXJlbnRvLnVzZXIuVXNlclByb3ZpZGVyIiwidiI6IiJ9LHsiayI6Ii9kdWJiby9jb20uaWt1cmVudG8udXNlci5Vc2VyUHJvdmlkZXIvY29uc3VtZXJzIiwidiI6IiJ9LHsiayI6Ii9kdWJibyIsInYiOiIifSx7ImsiOiIvZHViYm8vY29tLmlrdXJlbnRvLnVzZXIuVXNlclByb3ZpZGVyIiwidiI6IiJ9LHsiayI6Ii9kdWJiby9jb20uaWt1cmVudG8udXNlci5Vc2VyUHJvdmlkZXIvcHJvdmlkZXJzIiwidiI6IiJ9LHsiayI6Ii9kdWJiby9jb20uaWt1cmVudG8udXNlci5Vc2VyUHJvdmlkZXIvY29uc3VtZXJzL2NvbnN1bWVyJTNBJTJGJTJGMTcyLjE3LjAuOCUyRlVzZXJQcm92aWRlciUzRmNhdGVnb3J5JTNEY29uc3VtZXJzJTI2ZHViYm8lM0RkdWJib2dvLWNvbnN1bWVyLTIuNi4wJTI2cHJvdG9jb2wlM0RkdWJibyIsInYiOiIifV0= -``` - -### 鏈嶅姟鍙戠幇 - -渚濊禆 kube-apiserver 鎻愪緵浜� WATCH 鐨勫姛鑳姐€傚彲浠ヨ瀵熺壒瀹� namespace 鍐呭悇 Pod 瀵硅薄鐨勫彉鍖栥€俤ubbo-go 涓轰簡閬垮厤 dubbo-go 杩涚▼ WATCH 鍒颁笌 dubbo-go 杩涚▼鏃犲叧鐨� Pod 鐨勫彉鍖栵紝 dubbo-go 灏� WATCH 鐨勬潯浠堕檺鍒跺湪褰撳墠 Pod 鎵€鍦ㄧ殑 namespace 锛屼互鍙婁粎 WATCH 鍏锋湁 Key 涓� dubbo.io/label Value 涓� dubbo.io-value 鐨� Pod 銆傚湪 WATCH 鍒板搴� Pod 鐨勫彉鍖栧悗瀹炴椂鏇存柊鏈湴 Cache 锛屽苟閫氳繃 Registry 鎻愪緵鐨� Subscribe 鎺ュ彛閫氱煡寤虹珛鍦ㄦ敞鍐屼腑蹇冧箣涓婄殑鏈嶅姟闆嗙兢绠$悊鍏朵粬妯″潡銆� - -### 鎬讳綋璁捐鍥� - - -鍏蜂綋娴佺▼濡備笂鍥炬墍绀猴細 - -1.鍚姩 dubbo-go 鐨� Deployment 鎴栧叾浠栫被鍨嬫帶鍒跺櫒浣跨敤 K8s Downward-Api 灏嗘湰 Pod 鎵€鍦� namespace 閫氳繃鐜鍙橀噺鐨勫舰寮忔敞鍏� dubbo-go 杩涚▼銆� - -2.Consumer/Provider 杩涚▼鎵€鍦ㄧ殑 Pod 鍚姩鍚庨€氳繃鐜鍙橀噺鑾峰緱褰撳墠鐨� namespace 浠ュ強璇� Pod 鍚嶇О锛� 璋冪敤 kube-apiserver PATCH 鍔熻兘涓烘湰 Pod 娣诲姞 Key 涓� dubbo.io/label Value 涓� dubbo.io-value 鐨� label銆� - -3.Consumer/Provider 杩涚▼鎵€鍦ㄧ殑 Pod 鍚姩鍚庤皟鐢� kube-apiserver 灏嗘湰杩涚▼鐨勫厓鏁版嵁閫氳繃 PATCH 鎺ュ彛鍐欏叆褰撳墠 Pod 鐨� Annotations 瀛楁銆� - -4.Consumer 杩涚▼閫氳繃 kube-apiserver LIST 褰撳墠 namespace 涓嬪叾浠栧叿鏈夊悓鏍锋爣绛剧殑 Pod 锛屽苟瑙g爜瀵瑰簲鐨� Annotations 瀛楁鑾峰彇 Provider 鐨勪俊鎭€� - -5.Consumer 杩涚▼閫氳繃 kube-apiserver WATCH 褰撳墠 namespace 涓嬪叾浠栧叿鏈夊悓鏍� label 鐨� Pod 鐨� Annotations 鐨勫瓧娈靛彉鍖栵紝鍔ㄦ€佹洿鏂版湰鍦� Cache 銆� - -## 鎬荤粨 - -K8s 宸茬粡涓哄叾鎵胯浇鐨勬湇鍔℃彁渚涗簡涓€濂楁湇鍔″彂鐜帮紝鏈嶅姟娉ㄥ唽锛屼互鍙婃湇鍔¢泦缇ょ鐞嗘満鍒躲€傝€� dubbo-go 鐨勫悓鏃朵篃鎷ユ湁鑷垚浣撶郴鐨勬湇鍔¢泦缇ょ鐞嗐€傝繖涓や釜鍔熻兘鐐瑰舰鎴愪簡鍐茬獊锛屽湪鏃犳硶璋冭皭涓よ€呯殑鎯呭喌锛� dubbo-go 鍥㈤槦鍐冲畾淇濇寔 dubbo 鑷湁鐨勬湇鍔¢泦缇ょ鐞嗙郴锛岃€岄€夋嫨鎬х殑鏀惧純浜� Service 鍔熻兘锛屽皢鍏冩暟鎹洿鎺ュ啓鍏ュ埌 Pod 瀵硅薄鐨� Annotations 涓€� - -褰撶劧杩欏彧鏄� dubbo-go 鍦ㄥ皢 K8s 浣滀负鏈嶅姟娉ㄥ唽涓績鐨勬柟妗堜箣涓€锛屽悗缁ぞ鍖轰細浠ユ洿鍔犫€滀簯鍘熺敓鈥濈殑褰㈠紡瀵规帴 K8s 锛岃鎴戜滑鎷洰浠ュ緟鍚с€� - -dubbo-go 绀惧尯閽夐拤缇� :23331795 ,娆㈣繋浣犵殑鍔犲叆銆� - -- 浣滆€呬俊鎭細 - - 鐜嬬繑锛孏ithubID: sxllwx锛屽氨鑱屼簬鎴愰兘杈鹃椉绉戞妧鏈夐檺鍏徃锛実olang 寮€鍙戝伐绋嬪笀銆� diff --git a/doc/md/registry-center/dubbo-go-registry-center--nacos.md b/doc/md/registry-center/dubbo-go-registry-center--nacos.md deleted file mode 100644 index 5ee3f77ccc4f88c35891737d3df22fae076229ab..0000000000000000000000000000000000000000 --- a/doc/md/registry-center/dubbo-go-registry-center--nacos.md +++ /dev/null @@ -1,116 +0,0 @@ -# [瑙f瀯 Dubbo-go 鐨勬牳蹇冩敞鍐屽紩鎿� Nacos](https://my.oschina.net/dubbogo/blog/4608576) - -杩戝嚑骞达紝闅忕潃Go璇█绀惧尯閫愭笎鍙戝睍鍜屽.澶э紝瓒婃潵瓒婂鐨勫叕鍙稿紑濮嬪皾璇曢噰鐢℅o鎼缓寰湇鍔′綋绯伙紝涔熸秾鐜颁簡涓€鎵笹o鐨勫井鏈嶅姟妗嗘灦锛屽go-micro銆乬o-kit銆丏ubbo-go绛夛紝璺熷井鏈嶅姟娌荤悊鐩稿叧鐨勭粍浠朵篃閫愭笎寮€濮嬪湪Go鐢熸€佸彂鍔涳紝濡係entinel銆丠ystrix绛夐兘鎺ㄥ嚭浜咷o璇█鐗堟湰锛岃€屼綔涓哄井鏈嶅姟妗嗘灦鐨勬牳蹇冨紩鎿�--娉ㄥ唽涓績锛屼篃鏄繀涓嶅彲缂哄皯鐨勭粍浠讹紝甯傞潰宸茬粡鏈夊娆炬敞鍐屼腑蹇冩敮鎸丟o璇█锛屽簲璇ュ浣曢€夋嫨鍛紵鎴戜滑鍙互瀵圭洰鍓嶄富娴佺殑鏀寔Go璇█鐨勬敞鍐屼腑蹇冨仛涓姣斻€� - - - -鏍规嵁涓婅〃鐨勫姣旀垜浠彲浠ヤ粠浠ヤ笅鍑犱釜缁村害寰楀嚭缁撹锛� - -* 鐢熸€�:鍚勬敞鍐屼腑蹇冨Go璇█閮芥湁鏀寔锛屼絾鏄疦acos銆� Consul銆丒tcd 绀惧尯娲昏穬锛寊ookeeper鍜孍ureka绀惧尯娲昏穬搴﹁緝浣庯紱 -* 鏄撶敤鎬э細Nacos銆丒ureka銆丆onsul閮芥湁鐜版垚鐨勭鎺у钩鍙帮紝Etcd銆亃ookeeper鏈韩浣滀负kv瀛樺偍锛屾病鏈夌浉搴旂殑绠℃帶骞冲彴锛孨acos鏀寔涓枃鐣岄潰锛屾瘮杈冪鍚堝浗浜轰娇鐢ㄤ範鎯紱 -* 鍦烘櫙鏀寔锛欳P妯″瀷涓昏閽堝寮轰竴鑷村満鏅紝濡傞噾铻嶇被锛孉P妯″瀷閫傜敤浜庨珮鍙敤鍦烘櫙锛孨acos鍙互鍚屾椂婊¤冻涓ょ鍦烘櫙锛孍ureka涓昏婊¤冻楂樺彲鐢ㄥ満鏅紝Consul銆乑ookeepr銆丒tcd涓昏婊¤冻寮轰竴鑷村満鏅紝姝ゅNacos鏀寔浠庡叾瀹冩敞鍐屼腑蹇冨悓姝ユ暟鎹紝鏂逛究鐢ㄦ埛娉ㄥ唽涓績杩佺Щ锛� -* 鍔熻兘瀹屾暣鎬э細鎵€鏈夋敞鍐屼腑蹇冮兘鏀寔鍋ュ悍妫€鏌ワ紝Nacos銆丆onsul鏀寔鐨勬鏌ユ柟寮忚緝澶氾紝婊¤冻涓嶅悓搴旂敤鍦烘櫙锛孼ookeeper閫氳繃keep alive鏂瑰紡锛岃兘瀹炴椂鎰熺煡瀹炰緥鍙樺寲锛汵acos銆丆onsul鍜孍ureka閮芥敮鎸佽礋杞藉潎琛$瓥鐣ワ紝Nacos閫氳繃Metadata selector鏀寔鏇寸伒娲荤殑绛栫暐锛涙澶栵紝Nacos銆丒ureka閮芥敮鎸侀洩宕╀繚鎶わ紝閬垮厤鍥犱负杩囧鐨勫疄渚嬩笉鍋ュ悍瀵瑰仴搴风殑瀹炰緥閫犳垚闆穿鏁堝簲銆� - -缁煎悎涓婇潰鍚勭淮搴︾殑瀵规瘮锛屽彲浠ヤ簡瑙e埌Nacos浣滀负娉ㄥ唽涓績鏈変竴瀹氱殑浼樺娍锛岄偅涔堝畠瀵笹o寰湇鍔$敓鎬佺殑闆嗘垚鍋氬緱濡備綍锛熸帴涓嬫潵鎴戜滑棣栧厛鎺㈢储涓婲acos鏄浣曚笌Dubbo-go闆嗘垚銆� - -# 寮曡█ - -Dubbo-go鐩墠鏄疍ubbo澶氳瑷€鐢熸€佷腑鏈€鐏儹鐨勪竴涓」鐩紝浠�2016骞村彂甯冭嚦浠婏紝宸茬粡璧拌繃5涓勾澶淬€傛渶杩戯紝Dubbo-go鍙戝竷浜唙1.5鐗堟湰锛屽叏闈㈠吋瀹笵ubbo 2.7.x鐗堟湰锛屾敮鎸佷簡搴旂敤缁村害鐨勬湇鍔℃敞鍐屼笌鍙戠幇锛屽拰涓绘祦鐨勬敞鍐屾ā鍨嬩繚鎸佷竴鑷达紝鏍囧織鐫€Dubbo-go鍚戜簯鍘熺敓杩堝嚭浜嗗叧閿殑涓€姝ャ€備綔涓洪┍鍔ㄦ湇鍔¤繍杞殑鏍稿績寮曟搸--娉ㄥ唽涓績锛屽湪鍒囨崲鍒板簲鐢ㄧ淮搴︾殑娉ㄥ唽妯″瀷鍚庯紝涔熼渶瑕佸仛鐩稿簲鐨勯€傞厤锛屾湰鏂囧皢瑙f瀽濡備綍浠acos涓烘牳蹇冨紩鎿庡疄鐜板簲鐢ㄧ淮搴︾殑鏈嶅姟娉ㄥ唽涓庡彂鐜帮紝骞朵笖缁欏嚭鐩稿簲鐨勫疄璺垫渚嬨€傛澶栵紝鏈枃浠g爜鍩轰簬Dubbo-go v1.5.1锛孨acos-SDK-go v1.0.0鍜孨acos v1.3.2銆� - -# 鏈嶅姟娉ㄥ唽涓庡彂鐜版灦鏋� - -浠庢灦鏋勪腑锛屾垜浠彲浠ョ湅鍒帮紝涓庢帴鍙g骇鍒殑鏈嶅姟娉ㄥ唽鍙戠幇涓嶅悓鐨勬槸锛孌ubbo-go鐨刾rovider鍚姩鍚庝細璋冪敤Nacos-go-sdk鐨凴egisterInstance鎺ュ彛鍚慛acos娉ㄥ唽鏈嶅姟瀹炰緥锛屾敞鍐岀殑鏈嶅姟鍚嶅嵆涓哄簲鐢ㄥ悕绉帮紝鑰屼笉鏄帴鍙e悕绉般€侰onusmer鍚姩鍚庡垯浼氳皟鐢⊿ubscribe鎺ュ彛璁㈤槄璇ュ簲鐢ㄧ殑鏈嶅姟瀹炰緥鍙樺寲锛屽苟瀵圭殑瀹炰緥鍙戣捣鏈嶅姟璋冪敤銆� - - - -# 鏈嶅姟妯″瀷 - -鍥�3鏄垜浠珼ubbo-go鐨勫簲鐢ㄧ淮搴︽湇鍔″彂鐜版ā鍨嬶紝涓昏鏈夋湇鍔″拰瀹炰緥涓や釜灞傜骇鍏崇郴锛屾湇鍔″疄渚嬬殑灞炴€т富瑕佸寘鍚疄渚婭d銆佷富鏈哄湴鍧€銆佹湇鍔$鍙c€佹縺娲荤姸鎬佸拰鍏冩暟鎹€傚浘4涓篘acos鐨勬湇鍔″垎绾у瓨鍌ㄦā鍨嬶紝鍖呭惈鏈嶅姟銆侀泦缇ゅ拰瀹炰緥涓変釜灞傛銆備袱鑰呭姣旓紝澶氫簡涓€涓泦缇ょ淮搴︾殑灞傜骇锛岃€屼笖瀹炰緥灞炴€т俊鎭兘澶熷畬鍏ㄥ尮閰嶃€傛墍浠ュ湪Dubbo-go灏嗗簲鐢ㄦ湇鍔″疄渚嬫敞鍐屽埌Nacos鏃讹紝鎴戜滑鍙渶瑕佸皢闆嗙兢璁剧疆涓洪粯璁ら泦缇わ紝鍐嶅~鍏呮湇鍔″拰瀹炰緥鐨勭浉鍏冲睘鎬э紝鍗冲彲瀹屾垚鏈嶅姟妯″瀷涓婄殑鍖归厤銆傛澶朜acos鍙互灏嗘湇鍔℃敞鍐屽埌涓嶅悓鐨凬amespace涓嬶紝瀹炵幇澶氱鎴风殑闅旂銆�  - - - -# 鏈嶅姟瀹炰緥蹇冭烦缁存寔 - -Dubbo-go鐨凱rovider鍦ㄥ悜Nacos娉ㄥ唽搴旂敤鏈嶅姟瀹炰緥淇℃伅鍚庯紝闇€瑕佷富鍔ㄤ笂鎶ュ績璺筹紝璁㎞acos鏈嶅姟绔劅鐭ュ疄渚嬬殑瀛樻椿涓庡惁锛屼互鍒ゆ柇鏄惁灏嗚鑺傜偣浠庡疄渚嬪垪琛ㄤ腑绉婚櫎銆傜淮鎶ゅ績璺崇殑宸ヤ綔鏄湪Nacos-SDK-go瀹屾垚鐨勶紝浠庡浘5浠g爜涓彲浠ョ湅鍒帮紝褰揇ubbo-go璋冪敤RegisterInstance娉ㄥ唽涓€涓湇鍔″疄渚嬫椂锛孲DK闄や簡璋冪敤Nacos鐨凴egister API涔嬪锛岃繕浼氳皟鐢ˋddBeatInfo锛屽皢鏈嶅姟瀹炰緥淇℃伅娣诲姞鍒版湰鍦扮紦瀛橈紝閫氳繃鍚庡彴鍗忕▼瀹氭湡鍚慛acos鍙戦€佹湇鍔″疄渚嬩俊鎭紝淇濇寔蹇冭烦銆傚綋鏈嶅姟涓嬬嚎鏃讹紝鍙互閫氳繃璋冪敤DeRegisterInstance鎵ц鍙嶆敞鍐岋紝骞剁Щ闄ゆ湰鍦扮殑蹇冭烦淇濇寔浠诲姟锛孨acos瀹炰緥鍒楄〃涓篃浼氬皢璇ュ疄渚嬬Щ闄ゃ€� - - - -# 璁㈤槄鏈嶅姟瀹炰緥鍙樺寲 - -Dubbo-go鐨凜onsumer鍦ㄥ惎鍔ㄧ殑鏃跺€欎細璋冪敤Nacos-SDK-go鐨凷ubscribe鎺ュ彛锛岃鎺ュ彛鍏ュ弬濡傚浘6锛岃闃呯殑鏃跺€欏彧闇€瑕佷紶閫扴erviceName鍗冲簲鐢ㄥ悕鍜屽洖璋冨嚱鏁癝ubscribeCallback锛孨acos鍦ㄦ湇鍔″疄渚嬪彂鐢熷彉鍖栫殑鏃跺€欏嵆鍙€氳繃鍥炶皟鍑芥暟閫氱煡Dubbo-go銆侼acos-SDK-go鏄浣曟劅鐭acos鐨勬湇鍔″疄渚嬪彉鍖栫殑鍛紵涓昏鏈変袱绉嶆柟寮忥細 - -* Nacos鏈嶅姟绔富鍔ㄦ帹閫侊紝Nacos-SDK-go鍦ㄥ惎鍔ㄧ殑鏃跺€欎細鐩戝惉涓€涓猆DP绔彛锛岃绔彛鍦ㄨ皟鐢∟acos Register API鐨勬椂鍊欎綔涓哄弬鏁颁紶閫掞紝Nacos浼氳褰旾p鍜岀鍙o紝褰撴湇鍔″疄渚嬪彂鐢熷彉鍖栨椂锛孨acos浼氬鎵€鏈夌洃鍚鏈嶅姟鐨処p鍜岀鍙e彂閫乁DP璇锋眰锛屾帹閫佸彉鍖栧悗鐨勬湇鍔″疄渚嬩俊鎭€� - -* Nacos-SDK-go瀹氭湡鏌ヨ锛孲DK浼氬璁㈤槄鐨勬湇鍔″疄渚嬪畾鏃惰皟鐢ㄦ煡璇㈡帴鍙o紝濡傛灉鏌ヨ鏈夊彉鍖栧垯閫氳繃鍥炶皟鎺ュ彛閫氱煡Dubbo-go銆備綔涓哄厹搴曠瓥鐣ヤ繚璇丯acos鏈嶅姟绔帹閫佸け璐ュ悗锛屼粛鑳芥劅鐭ュ埌鍙樺寲銆� - -  - - -姝ゅNacos-SDK-go杩樻敮鎸佹帹绌轰繚鎶わ紝褰揘acos鎺ㄩ€佺殑瀹炰緥鍒楄〃涓虹┖鏃讹紝涓嶆洿鏂版湰鍦扮紦瀛橈紝涔熶笉閫氱煡Dubbo-go鍙樻洿锛岄伩鍏岰onsumer鏃犲彲鐢ㄥ疄渚嬭皟鐢紝閫犳垚鏁呴殰銆傚悓鏃讹紝SDK杩樻敮鎸佹湇鍔″疄渚嬩俊鎭湰鍦版寔涔呭寲瀛樺偍锛屽彲浠ヤ繚璇佸湪Nacos鏈嶅姟鏁呴殰杩囩▼涓紝Consumer閲嶅惎涔熻兘鑾峰彇鍒板彲鐢ㄥ疄渚嬶紝鍏峰瀹圭伨鏁堟灉銆� - -# 鑼冧緥瀹炶返 - -## 鐜鍑嗗 - -dubbo-go samples浠g爜涓嬭浇锛歔https://github.com/apache/dubbo-samples/tree/master/golang锛屽熀浜嶯acos娉ㄥ唽涓績鐨勫簲鐢ㄧ骇鏈嶅姟鍙戠幇鐨刪ello](https://github.com/apache/dubbo-samples/tree/master/golang%EF%BC%8C%E5%9F%BA%E4%BA%8ENacos%E6%B3%A8%E5%86%8C%E4%B8%AD%E5%BF%83%E7%9A%84%E5%BA%94%E7%94%A8%E7%BA%A7%E6%9C%8D%E5%8A%A1%E5%8F%91%E7%8E%B0%E7%9A%84hello) world浠g爜鐩綍鍦� registry/servicediscovery/nacos銆� - - - -Nacos鏈嶅姟绔惌寤猴紝鍙傝€冨畼鏂规枃妗o細[https://nacos.io/zh-cn/docs/quick-start.html锛屾垨鑰呬娇鐢ㄥ畼鏂规彁渚涚殑鍏叡Nacos鏈嶅姟锛歨ttp://console.nacos.io/nacos(璐﹀彿瀵嗙爜:nacos锛屼粎渚涙祴璇�)锛屾垨鑰呰喘涔伴樋閲屼簯鏈嶅姟锛歨ttps://help.aliyun.com/document\_detail/139460.html?spm=a2c4g.11186623.6.559.d7e264b7bLpZIs](https://nacos.io/zh-cn/docs/quick-start.html%EF%BC%8C%E6%88%96%E8%80%85%E4%BD%BF%E7%94%A8%E5%AE%98%E6%96%B9%E6%8F%90%E4%BE%9B%E7%9A%84%E5%85%AC%E5%85%B1Nacos%E6%9C%8D%E5%8A%A1%EF%BC%9Ahttp://console.nacos.io/nacos(%E8%B4%A6%E5%8F%B7%E5%AF%86%E7%A0%81:nacos%EF%BC%8C%E4%BB%85%E4%BE%9B%E6%B5%8B%E8%AF%95)%EF%BC%8C%E6%88%96%E8%80%85%E8%B4%AD%E4%B9%B0%E9%98%BF%E9%87%8C%E4%BA%91%E6%9C%8D%E5%8A%A1%EF%BC%9Ahttps://help.aliyun.com/document_detail/139460.html?spm=a2c4g.11186623.6.559.d7e264b7bLpZIs) - -## Server绔惌寤� - -杩涘叆registry/servicediscovery/nacos/go-server/profiles鏂囦欢锛屽彲浠ョ湅鍒版湁dev銆乺elease鍜宼est涓変釜鏂囦欢澶癸紝鍒嗗埆瀵瑰簲寮€鍙戙€佹祴璇曞拰鐢熶骇閰嶇疆銆傛垜浠娇鐢╠ev閰嶇疆鏉ユ惌寤哄紑鍙戠幆澧冿紝dev鏂囦欢涓嬫湁log.yml鍜宻erver.yml鏂囦欢锛屼笅闈㈠server.yml閰嶇疆杩涜淇敼銆� - -remote閰嶇疆锛岃繖閲屼娇鐢ㄥ叕鍏辩殑Nacos鏈嶅姟锛宎ddress鏀寔閰嶇疆澶氫釜鍦板潃锛岀敤閫楀彿鍒嗗壊銆俻arams鍙傛暟閰嶇疆nacos-sdk鐨勬棩蹇楃洰褰曘€� - -```Yaml -remote: - nacos: - address: "console.nacos.io:80" - timeout: "5s" - params: - logDir: "/data/nacos-sdk/log" -configCenter閰嶇疆 -config_center: - protocol: "nacos" - address: "console.nacos.io:80" -``` - -閰嶇疆server绔幆澧冨彉閲� - -```Bash -export CONF_PROVIDER_FILE_PATH=server绔殑server.yml鏂囦欢璺緞 -export APP_LOG_CONF_FILE=server绔殑log.yml鏂囦欢璺緞 -``` - -杩涘叆registry/servicediscovery/nacos/go-server/app锛岃繍琛宻erver.go鐨刴ain鏂规硶锛屽彲浠ヤ粠Nacos鐨勬帶鍒跺彴锛圼http://console.nacos.io/nacos/#/serviceManagement?dataId=&group=&appName=&namespace=锛塢(http://console.nacos.io/nacos/#/serviceManagement?dataId=&group=&appName=&namespace=%EF%BC%89) - -鐪嬪埌锛屽簲鐢╱ser-info-server宸茬粡娉ㄥ唽鎴愬姛銆� - - - - - -## Client绔惌寤� - -client鐨勯厤缃枃浠跺湪registry/servicediscovery/nacos/go-server/profiles鐩綍涓嬶紝闇€瑕佷慨鏀圭殑鍦版柟璺焥erver绔竴鏍凤紝杩欓噷涓嶈禈杩般€� - -閰嶇疆client绔幆澧冨彉閲� - -```Bash -export CONF_CONSUMER_FILE_PATH=client绔殑server.yml鏂囦欢璺緞 -export APP_LOG_CONF_FILE=client绔殑log.yml鏂囦欢璺緞 -``` - -杩涘叆registry/servicediscovery/nacos/go-client/app锛岃繍琛宑lient.go鐨刴ain鏂规硶锛岀湅鍒板涓嬫棩蹇楄緭鍑猴紝琛ㄧず璋冪敤server绔垚鍔熴€� - - - -浣滆€咃細鏉庡織楣� - -Github璐﹀彿锛歀zp0412锛孨acos-SDK-go浣滆€咃紝Apache/Dubbo-go Contributor銆傜幇灏辫亴浜庨樋閲屼簯浜戝師鐢熷簲鐢ㄥ钩鍙帮紝涓昏鍙備笌鏈嶅姟鍙戠幇銆丆oreDNS銆丼erviceMesh鐩稿叧宸ヤ綔锛岃礋璐f帹鍔∟acos Go寰湇鍔$敓鎬佸缓璁俱€� - -鐩稿叧閾炬帴 Nacos-SDK-go椤圭洰鍦板潃锛歔https://github.com/nacos-group/nacos-sdk-go](https://github.com/nacos-group/nacos-sdk-go) Nacos golang鐢熸€佷氦娴佺兢锛�23191211 Nacos椤圭洰鍦板潃锛歔https://nacos.io/](https://nacos.io/) Nacos绀惧尯浜ゆ祦缇わ細30438813 - -Dubbo-go 椤圭洰鍦板潃锛歔https://github.com/apache/dubbo-go](https://github.com/apache/dubbo-go) Dubbo-go绀惧尯浜ゆ祦缇わ細23331795 \ No newline at end of file diff --git a/doc/md/routing-rule/how-to-implement-routing-rule-in-dubbo-go.md b/doc/md/routing-rule/how-to-implement-routing-rule-in-dubbo-go.md deleted file mode 100644 index 14da444755a9c0e9f1fd8e6b7cef6db563b5a746..0000000000000000000000000000000000000000 --- a/doc/md/routing-rule/how-to-implement-routing-rule-in-dubbo-go.md +++ /dev/null @@ -1,215 +0,0 @@ -# [dubbo-go 涓浣曞疄鐜拌矾鐢辫鍒欏姛鑳絔(https://zouyx.github.io/posts/2020/03/30/dubbo-go%20%E4%B8%AD%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%E8%B7%AF%E7%94%B1%E8%A7%84%E5%88%99%E5%8A%9F%E8%83%BD.html) - -dubbo-go 涓浣曞疄鐜拌矾鐢辫鍒欏姛鑳� - -# Let鈥榮 Go! - -* * * - -鏈€杩戝湪 Apache/dubbo-go锛堜互涓嬬畝绉� dubbo-go 锛夌ぞ鍖轰腑锛岃矾鐢辫鍒欑獊鐒舵垚浜嗗懠澹版渶楂樼殑鍔熻兘涔嬩竴銆傞偅鍒板簳涓轰粈涔堥渶瑕佽矾鐢辫鍒欙紵 - -鍏堣矾鐢辫鍒欓渶瑕佸疄鐜扮殑鍔熻兘锛� - -璺敱瑙勫垯锛� routing rule 锛夋槸涓轰簡鏀瑰彉缃戠粶娴侀噺鎵€缁忚繃鐨勯€斿緞鑰屼慨鏀硅矾鐢变俊鎭殑鎶€鏈紝涓昏閫氳繃鏀瑰彉璺敱灞炴€э紙鍖呮嫭鍙揪鎬э級鏉ュ疄鐜般€傚湪鍙戣捣涓€娆� RPC 璋冪敤鍓嶈捣鍒拌繃婊ょ洰鏍囨湇鍔″櫒鍦板潃鐨勪綔鐢紝杩囨护鍚庣殑鍦板潃鍒楄〃锛屽皢浣滀负娑堣垂绔渶缁堝彂璧� RPC 璋冪敤鐨勫閫夊湴鍧€銆� - -璇曟兂璇ヤ笅鍦烘櫙锛氫娇鐢� dubbo-go 鍦ㄧ敓浜х幆澧冧笂锛屾帓闄ら鍙戝竷鏈恒€備娇鐢ㄨ矾鐢辫鍒欏疄鐜颁笉鏄緢鍚堥€傚悧锛� - -铏界劧鐭ラ亾浜嗚矾鐢辫鍒欓渶瑕佸疄鐜颁粈涔堝姛鑳斤紝浣嗚繕涓嶈冻浠ュ疄鐜颁竴涓畬鏁寸殑璺敱瑙勫垯鍔熻兘銆傞櫎姝や箣澶栵紝杩橀渶瑕佺煡閬撳浣曟柟渚跨殑绠$悊璺敱瑙勫垯銆� - -# 鐩爣 - -缁间笂鎵€杩帮紝鍙互鎬荤粨鍑轰互涓� **鐩爣** - -* 鏀寔鏂逛究鎵╁睍璺敱瑙勫垯鐨勯厤缃紱 -* 鍙互鏂逛究鐨勭鐞嗚矾鐢辫鍒欓厤缃紝濡傛敮鎸佹湰鍦颁笌杩滅▼閰嶇疆涓績绠$悊锛� -* 涓� Dubbo 鐜版湁鐨勯厤缃腑蹇冨唴鐨勮矾鐢辫鍒欓厤缃枃浠跺吋瀹癸紝闄嶄綆鍦ㄦ柊澧炶瑷€鏍堢殑瀛︿範鍙婁娇鐢ㄦ垚鏈紱 - -# 璺敱瑙勫垯璁捐 - -鍦ㄨ璁′箣鍒濓紝棣栧厛瑕佽€冭檻鐨勬槸璺敱瑙勫垯搴旇鏀惧湪鏁翠釜鏈嶅姟娌荤悊鍛ㄦ湡鐨勫摢涓樁娈靛憿锛� - -鏈変簺璇昏€呭彲鑳戒細鏈夌偣鍥版儜锛屾垜杩炴灦鏋勫浘閮戒笉鐭ラ亾锛屽浣曡€冭檻鍦ㄥ摢涓樁娈碉紵涓嶆€曪紝涓嬪浘椹笂缁欎綘瑙f儜銆� - - - -鍙互鐪嬪埌鍥句腑鐨� Router 灏辨槸璺敱瑙勫垯鎻掑叆鐨勪綅缃紝鐩墠璺敱瑙勫垯涓昏鐢ㄤ簬鎺у埗 Consumer 鍒� Provider 涔嬮棿鐨勭綉缁滄祦閲忕殑璺敱璺緞銆� - -闄ゆ涔嬪锛岃繕鏈夊嚑涓棶棰樻槸闇€瑕佷紭鍏堣€冭檻锛� - -1.闇€瑕佷粈涔堝姛鑳斤紵 - -* 閫氳繃閰嶇疆淇℃伅鐢熸垚璺敱瑙勫垯锛屽寘鎷細璇诲彇骞惰В鏋愭湰鍦伴厤缃枃浠讹紝璇诲彇骞惰В鏋愰厤缃腑蹇冪殑閰嶇疆銆備互璐d换閾炬ā寮忎覆鑱旇捣鏉ャ€� -* 閫氳繃璺敱瑙勫垯锛屽尮閰嶆湰鍦颁俊鎭笌杩滅鏈嶅姟淇℃伅锛岃繃婊ゅ嚭鍙互璋冪敤鐨勮繙绔妭鐐癸紝鍐嶈繘琛岃礋杞藉潎琛°€� - -2.濡備綍璁捐鎺ュ彛锛� - -閫氳繃绗竴鐐癸紝鎴戜滑鑳借璁″嚭浠ヤ笅鎺ュ彛鏉ュ疄鐜版墍闇€鐨勫姛鑳姐€� - -* 璺敱瑙勫垯鎺ュ彛锛氱敤浜庤矾鐢辫鍒欒繃婊ゅ嚭鍙互璋冪敤鐨勮繙绔妭鐐广€� - -* 璺敱瑙勫垯璐d换閾炬帴鍙o細鍏佽鎵ц澶氫釜璺敱瑙勫垯銆� - -* 閰嶇疆淇℃伅鐢熸垚璺敱瑙勫垯鎺ュ彛锛氳В鏋愬唴閮ㄩ厤缃俊鎭紙common.URL锛夌敓鎴愬搴旂殑璺敱瑙勫垯銆� - -* 閰嶇疆鏂囦欢鐢熸垚璺敱瑙勫垯鎺ュ彛锛氳В鏋愰厤缃枃浠剁敓鎴愬搴旂殑璺敱瑙勫垯銆� - - -3.濡備綍瀹炵幇鏈湴涓庤繙绋嬭矾鐢辫鍒欓厤缃姞杞斤紵 - -* 鏈湴璺敱瑙勫垯閰嶇疆锛氬湪鍘熼厤缃姞杞介樁娈碉紝鏂板璇诲彇璺敱閰嶇疆鏂囦欢銆備娇鐢� `FIleRouterFactory` 瑙f瀽鍚庯紝鐢熸垚瀵瑰簲璺敱瑙勫垯锛屾斁缃埌鍐呭瓨涓鐢ㄣ€� -* 杩滅▼璺敱瑙勫垯閰嶇疆锛氬湪 zookeeper 娉ㄥ唽骞剁洃鍚潤鎬佽祫婧愮洰褰曞悗銆傝鍙栭潤鎬佽祫婧愶紝绛涢€夌鍚堣矾鐢辫鍒欓厤缃俊鎭紝閫氳繃 `RouterFactory` 鐢熸垚瀵瑰簲璺敱瑙勫垯锛屾斁缃埌鍐呭瓨涓鐢ㄣ€� - -## Router - -鍖归厤鍙婅繃婊よ繙绋嬪疄渚嬬殑璺敱瑙勫垯銆�  鐩墠宸叉湁瀹炵幇绫诲寘鎷細 - -* listenableRouter: -* AppRouter锛� -* ConditionRouter锛� -* HealthCheckRouter: -* FileConditionRouter: - -## RouterChain - -鎵ц澶氫釜璺敱瑙勫垯鐨勮矗浠婚摼銆�  - -## FIleRouterFactory - -鐢熸垚瑙f瀽閰嶇疆鏂囦欢鐢熸垚璺敱瑙勫垯鐨勫伐鍘傜被銆�  - -## RouterFactory - -閫氳繃閰嶇疆淇℃伅鐢熸垚璺敱瑙勫垯鐨勫伐鍘傜被銆�  - -# 瀹炵幇 - - - -瀹炵幇璺敱瑙勫垯浠ュ吋瀹� dubbo 涓洪瑕佺洰鏍囷紝闄嶄綆浣跨敤鑰呯殑瀛︿範鎴愭湰涓鸿緟鍔╃洰鏍囥€備笌閰嶇疆涓績妯″潡鐩哥粨鍚堬紝瀹炵幇璺敱瑙勫垯杩滅▼缁熶竴绠$悊涓庝笅鍙戙€� - -## 瑙勫垯绫诲瀷 - -涓嬮潰鍏堟潵浠嬬粛涓€涓嬫湁鍝簺鍏蜂綋鐨勮矾鐢辫鍒欏疄鐜般€� - -### **鏉′欢璺敱** - -dubbo-go 涓涓€涓敮鎸佺殑璺敱瑙勫垯锛屽厑璁哥敤鎴烽€氳繃閰嶇疆鏂囦欢鍙婇厤缃腑蹇冪鐞嗚矾鐢辫鍒欍€� - -涓庝箣鐩镐技鐨勪竴涓蹇垫槸 dubbo-go 閲岄潰鐨� group 姒傚康锛屼絾鏄潯浠惰矾鐢辨彁渚涗簡鏇村姞缁嗙矑搴︾殑鎺у埗鎵嬫鍜屾洿鍔犱赴瀵岀殑琛ㄨ揪璇箟銆傛瘮杈冨吀鍨嬬殑浣跨敤鍦烘櫙鏄粦鐧藉悕鍗曡缃紝鐏板害浠ュ強娴嬭瘯绛夈€� - -### **鍋ュ悍妫€鏌ヨ矾鐢�** - -鍦� RPC 璋冪敤涓紝鎴戜滑甯屾湜灏藉彲鑳藉湴灏嗚姹傚懡涓埌閭d簺澶勭悊鑳藉姏蹇€佸浜庡仴搴风姸鎬佺殑瀹炰緥锛岃璺敱鐨勫姛鑳藉氨鏄€氳繃鏌愮绛栫暐鏂畾鏌愪釜瀹炰緥涓嶅仴搴凤紝骞跺皢鍏舵帓闄ゅ湪鍊欓€夎皟鐢ㄥ垪琛紝浼樺厛璋冪敤閭d簺鍋ュ悍鐨勫疄渚嬨€傝繖閲岀殑鈥濆仴搴封€濆彲浠ユ槸鎴戜滑鑷繁瀹氫箟鐨勭姸鎬侊紝榛樿瀹炵幇鍗冲綋閿欒姣斾緥鍒拌揪鏌愪竴涓槇鍊兼椂鎴栬€呰姹傛椿璺冩暟澶т簬涓婇檺鍒欒涓哄叾涓嶅仴搴凤紝鍏佽鐢ㄦ埛鎵╁睍鍋ュ悍妫€娴嬬瓥鐣ャ€� - -鍦ㄦ垜浠湇鍔℃不鐞嗛噷闈紝鏍稿績鐨勯棶棰樺叾瀹炲氨鍦ㄤ簬濡備綍鍒ゆ柇涓€涓疄渚嬫槸鍚﹀彲鐢ㄣ€傛棤璁烘槸璐熻浇鍧囪 銆� - -鐔旀柇杩樻槸闄愭祦锛岄兘鏄杩欎釜闂鐨勮В绛斻€傛墍浠ワ紝杩欎釜 feature 鏄竴涓緢濂界殑灏濊瘯銆傚洜涓烘垜浠帴涓嬫潵璁″垝鎻愪緵鐨勭壒鎬э紝鍩轰簬瑙勫垯鐨勯檺娴佷互鍙婂姩鎬侀檺娴侊紝閮芥槸瑕佽В鍐� 鈥滃浣曟柇瀹氫竴涓疄渚嬫槸鍚﹀彲鐢ㄢ€� 杩欎箞涓€涓棶棰樸€� - -鎵€浠ユ杩庡ぇ瀹朵娇鐢ㄨ繖涓壒鎬э紝骞跺悜绀惧尯鍙嶉鍚勮嚜璁惧畾鐨勫仴搴锋寚鏍囥€傝繖瀵规垜浠帴涓嬫潵鐨勫伐浣滀細鏈夊緢澶х殑甯姪銆� - -### **鏍囩璺敱** - -浠� Provider 涓虹淮搴︼紝閫氳繃灏嗘煇涓€涓垨澶氫釜鏈嶅姟鐨勬彁渚涜€呭垝鍒嗗埌鍚屼竴涓垎缁勶紝绾︽潫娴侀噺鍙湪鎸囧畾鍒嗙粍涓祦杞紝浠庤€屽疄鐜版祦閲忛殧绂荤殑鐩殑锛屽彲浠ヤ綔涓鸿摑缁垮彂甯冦€佺伆搴﹀彂甯冪瓑鍦烘櫙鐨勮兘鍔涘熀纭€銆� - -* 闈欐€佹墦鏍囷細鏍规嵁閰嶇疆鏂囦欢鎵€閰嶇疆鐨勬爣绛撅紝鍥哄畾缁� Provider 璁剧疆鏍囩銆� -* 鍔ㄦ€佹墦鏍囷細鍩轰簬鍋ュ悍妫€鏌ヨ矾鐢憋紝鏍规嵁鏈嶅姟涓嶅悓鏃跺埢锛屼笉鍚岀姸鎬侊紝鍔ㄦ€佸湪 Provider 璁剧疆閫傚悎鐨勬爣绛俱€� - -## 鍒嗘瀽 - -鎺ョ潃锛屼互鏉′欢璺敱鍦� zookeeper 瀹炵幇涓轰緥锛屽鏈嶅姟鎻愪緵鑰呬笌鏈嶅姟娑堣垂鑰呰繘琛屾暣浣撴祦绋嬪垎鏋愩€� - -### 濡備綍閰嶇疆鏉′欢璺敱瑙勫垯 - -閰嶇疆鏉′欢璺敱瑙勫垯鏃㈠彲浠ラ€氳繃鏈湴閰嶇疆鏂囦欢涔熻兘閫氳繃杩滅▼閰嶇疆涓績杩涜閰嶇疆锛岄厤缃敓鏁堟祦绋嬮兘鏄細閰嶇疆鏂囦欢 => dubbo 鍐呴儴鍗忚 => 缂撳瓨鑷冲簲鐢ㄧ骇鍐呭瓨 => 杩囨护鍑哄彲璋冪敤鑺傜偣銆� - -**dubbo-admin** 銆愭湇鍔℃不鐞�/鏉′欢璺敱銆戝鍔犺矾鐢辫鍒欓厤缃紝zookeeper 涓細鑷姩鐢熸垚鍏跺搴旈厤缃妭鐐癸紝鍐呭鍧囦负 **dubbo-admin** 涓缃殑閰嶇疆銆� - -**_鍏ㄥ眬閰嶇疆_** - -瀵瑰簲搴旂敤绾у叏灞€璺敱瑙勫垯閰嶇疆銆� - -```plain -/dubbo/config/dubbo/user-info-server锛堝簲鐢ㄥ悕锛�.condition-router -``` - -搴旂敤鍚嶏細鍙 user-info-server 搴旂敤鐢熸晥 .condition-router: 璺敱绫诲瀷銆傞櫎姝や箣澶栵紝杩樻湁 .tag-router 琛ㄧず鏍囩璺敱銆� - -**_鏈嶅姟閰嶇疆_** - -瀵瑰簲鏈嶅姟绾ф墍鏈夎矾鐢辫鍒欓厤缃€� - -```plain -/dubbo/ com.ikurento.user.UserProvider锛堟湇鍔″悕锛� /routers -``` - -鏈嶅姟鍚嶏細鍙 com.ikurento.user.UserProvider 鏈嶅姟鐢熸晥銆� - -## 瀹炵幇 Router - - - -浠ヤ笅涓哄繀椤诲疄鐜扮殑鏂规硶锛屼互涓嬫柟娉曠敤浜庤幏鍙栬繃婊ゆ湇鍔$鑺傜偣閰嶇疆銆� - -* Route: 鏍规嵁閰嶇疆锛岃皟鐢ㄨ妭鐐逛笌琚皟鐢ㄨ妭鐐癸紝杩囨护鍑哄彲璋冪敤鑺傜偣銆� -* Priority: 璺敱瑙勫垯浼樺厛绾э紝闇€瑕佹槸涓鏁存暟銆� -* URL: 閫氳繃璺敱瑙勫垯杞崲鍑烘潵鐨� dubbo 鍐呴儴鍗忚銆� - -鏇村瀹炵幇鍙傝€冿細 - -璺敱瑙勫垯锛歔https://github.com/apache/dubbo-go/tree/master/cluster/router/condition](https://github.com/apache/dubbo-go/tree/master/cluster/router/condition) - -鍏朵腑鍖呭惈鐩戝惉閰嶇疆涓績瀹炵幇锛歔https://github.com/apache/dubbo-go/blob/master/cluster/router/condition/listenable\_router.go](https://github.com/apache/dubbo-go/blob/master/cluster/router/condition/listenable_router.go) - -# 浣跨敤鏂规硶 - -缁忚繃涓婇潰璁捐涓庡疄鐜扮殑鍒嗘瀽锛屽ぇ姒備篃鑳界寽娴嬪埌濡備綍浣跨敤锛� - - - -濡傚浘鎵€绀猴紝浣跨敤璺敱瑙勫垯骞朵笉澶嶆潅锛屽彧闇€瑕佹妸瀵瑰簲鐨勪緷璧栧紩鍏ヨ繘鏉ャ€傚湪鍖呭垵濮嬪寲鐨勬椂鍊欙紝浼氬垱寤哄嚭鏉ュ搴旂殑璺敱瑙勫垯鐨勫疄鐜般€傛瘮濡傝鍔犺浇鏉′欢璺敱銆佸仴搴锋娴嬭矾鐢辨垨鑰呮爣绛句綔涓鸿矾鐢辫鍒欙細 - -## 鏈湴璺敱瑙勫垯閰嶇疆 - -```plain -_ "github.com/apache/dubbo-go/cluster/router/condition" -``` - -浠呬粎寮曠敤渚濊禆鍖呰繕涓嶇洿鎺ヤ娇鐢紝杩橀渶瑕侀厤缃寚瀹氱殑閰嶇疆鏂囦欢锛� **_router\_config.yml_** 锛屽唴瀹瑰涓�: - -```plain -# dubbo router yaml configure file -priority: 1 -force: true -conditions : ["host = 1.1.1.1 => host = 192.168.199.214"] -``` - -鏇村閰嶇疆鏂瑰紡锛歔鏉′欢璺敱閰嶇疆](http://dubbo.apache.org/zh-cn/docs/user/demos/routing-rule.html) - -## 閰嶇疆涓績閰嶇疆 - -```plain -_ "github.com/apache/dubbo-go/config_center/zookeeper" -``` - -鐩墠浠呮敮鎸� zookeeper 閰嶇疆涓績锛屼笌 dubbo-admin 缁撳悎鍗冲彲浣跨敤銆傞厤缃柟寮忓涓嬶細 - - - - - -# 鎬荤粨 - -鏇村姞鍏蜂綋鐨勫疄鐜帮紝鎴戝氨涓嶈缁嗚杩帮紝澶у鍙互鍘荤湅婧愮爜锛屾杩庡ぇ瀹舵寔缁叧娉紝鎴栬€呰础鐚唬鐮併€� - -鏁翠釜璺敱瑙勫垯鍔熻兘锛屽凡缁忚兘璺熶笂 dubbo 2.7.x 鐗堟湰锛屽凡缁忔敮鎸佹湰鍦板強杩滅璺敱瑙勫垯閰嶇疆绠$悊銆備粠鎵╁睍鎬ф潵璇达紝鏄瘮杈冧究鍒┿€傜洰鍓嶅凡缁忔敮鎸佹潯浠惰矾鐢便€佹爣绛捐矾鐢变笌鍋ュ悍妫€娴嬭矾鐢憋紝铏界劧鑳芥弧瓒冲熀鏈娇鐢ㄥ満鏅紝璺濈瀹屽杽杩樻湁杩橀暱杩滅殑璺€� - -鏈潵璁″垝锛� - -1. 鏇村鐨勯厤缃腑蹇冩敮鎸侊紝鐞嗚涓婂凡缁忔敮鎸侊紝浣嗚繕娌℃祴璇曘€� -2. service-router锛堟湭鏀寔锛� -3. 鏍囩璺敱-閰嶇疆涓績锛堟湭鏀寔锛� -4. 鐩墠璺敱涓庨厤缃腑蹇冪粨鍚堢殑浠g爜锛屽鏂板璺敱瑙勫垯骞朵笉鍙嬪ソ锛屾湁涓€瀹氭帴鍏ユ垚鏈€� - -娆㈣繋澶у鍏虫敞鎴栬€呰础鐚唬鐮侊紝[https://github.com/apache/dubbo-go](https://github.com/apache/dubbo-go) - -Written on March 31, 2020 \ No newline at end of file diff --git a/doc/md/rpc/dubb-go-adaptive-grpc.md b/doc/md/rpc/dubb-go-adaptive-grpc.md deleted file mode 100644 index 2105d23ef6d5c41b5a3d15e8309a6c39573cce97..0000000000000000000000000000000000000000 --- a/doc/md/rpc/dubb-go-adaptive-grpc.md +++ /dev/null @@ -1,129 +0,0 @@ -# [鏃犵紳琛旀帴 gRPC 涓� dubbo-go](https://developer.aliyun.com/article/742946) - -[涓棿浠跺皬鍝(https://developer.aliyun.com/profile/g6g63f3lanvck) 2020-01-19 1530娴忚閲� - -**绠€浠嬶細** - -鏈€杩戞垜浠� dubbo-go 绀惧尯閲岄潰锛屽懠澹板緢澶х殑涓€涓� feature 灏辨槸瀵� gRPC 鐨勬敮鎸併€傚湪鏌愪綅澶т浆鐨勪笉鎳堝姫鍔涗箣涓嬶紝缁堜簬寮勫嚭鏉ヤ簡銆� - -浠婂ぉ鎴戝氨缁欏ぇ瀹跺垎鏋愪竴涓嬪ぇ浣槸鎬庝箞杩炴帴 dubbo-go 鍜� gRPC 銆� - -## gRPC - -鍏堟潵绠€鍗曚粙缁嶄竴涓� gRPC 銆傚畠鏄� Google 鎺ㄥ嚭鏉ョ殑涓€涓� RPC 妗嗘灦銆俫RPC鏄€氳繃 IDL ( Interface Definition Language )鈥斺€旀帴鍙e畾涔夎瑷€鈥斺€旂紪璇戞垚涓嶅悓璇█鐨勫鎴风鏉ュ疄鐜扮殑銆傚彲浠ヨ鏄疪PC鐞嗚鐨勪竴涓潪甯搁潪甯告爣鍑嗙殑瀹炵幇銆� - -鍥犺€� gRPC 澶╃劧灏辨敮鎸佸璇█銆傝繖鍑犲勾锛屽畠鍑犱箮鎴愪负浜嗚法璇█ RPC 妗嗘灦鐨勬爣鍑嗗疄鐜版柟寮忎簡锛屽緢澶氫紭绉€鐨剅pc妗嗘灦锛屽 Spring Cloud 鍜� dubbo 锛岄兘鏀寔 gRPC 銆� - -server 绔� - -鍦� Go 閲岄潰锛宻erver 绔殑鐢ㄦ硶鏄細 - - -瀹冪殑鍏抽敭閮ㄥ垎鏄細`s := grpc.NewServer()`鍜宍pb.RegisterGreeterServer(s, &server{})`涓や釜姝ラ銆傜涓€涓楠ゅ緢瀹规槗锛屽敮鐙浜屼釜姝ラ`RegisterGreeterServer`鏈夌偣楹荤儲銆備负浠€涔堝憿锛� - -鍥犱负`pb.RegisterGreeterServer(s, &server{})`杩欎釜鏂规硶鏄€氳繃鐢ㄦ埛瀹氫箟鐨刞protobuf`缂栬瘧鍑烘潵鐨勩€� - -濂藉湪锛岃繖涓紪璇戝嚭鏉ョ殑鏂规硶锛屾湰璐ㄤ笂鏄細 - - - -涔熷氨鏄锛屽鏋滄垜浠湪 dubbo-go 閲岄潰鎷垮埌杩欎釜 \_Greeter\_serviceDesc 锛屽氨鍙互瀹炵幇杩欎釜 server 鐨勬敞鍐屻€傚洜姝わ紝鍙互鐪嬪埌锛屽湪 dubbo-go 閲岄潰锛岃瑙e喅鐨勪竴涓叧閿棶棰樺氨鏄浣曟嬁鍒拌繖涓� serviceDesc 銆� - -## Client 绔� - -Client 绔殑鐢ㄦ硶鏄細 - - -杩欎釜涓滆タ瑕佸鏉備竴鐐癸細 -1銆佸垱寤鸿繛鎺ワ細conn, err := grpc.Dial(address) -2銆佸垱寤篶lient锛歝 := pb.NewGreeterClient(conn) -3銆佽皟鐢ㄦ柟娉曪細r, err := c.SayHello(ctx, &pb.HelloRequest{Name: name}) - -绗竴涓棶棰樺叾瀹炴尯濂借В鍐崇殑锛屾瘯绔熸垜浠彲浠ヤ粠鐢ㄦ埛鐨勯厤缃噷闈㈣鍑� address 锛� - -绗簩涓棶棰樺氨鏄渶闅剧殑鍦版柟浜嗐€傚鍚� RegisterGreeterServer 鏄缂栬瘧鍑烘潵鐨勯偅鏍凤紝杩欎釜 NewGreeterClient 涔熸槸琚紪璇戝嚭鏉ョ殑銆� - -鑰岀涓変釜闂锛屼箥涓€鐪嬫槸鐢ㄥ弽灏勫氨鑳借В鍐筹紝浣嗘槸鎴戜滑鎵撳紑 SayHello 灏辫兘鐪嬪埌锛� - - -缁撳悎 greetClient 鐨勫畾涔夛紝寰堝鏄撶湅鍒帮紝鎴戜滑鐨勫叧閿氨鍦ㄤ簬 err := c.cc.Invoke ( ctx, "/helloworld.Greeter/SayHello", in, out, opts... )銆傛崲瑷€涔嬶紝鎴戜滑鍙渶瑕佸垱寤哄嚭鏉ヨ繛鎺ワ紝骞朵笖鎷垮埌鏂规硶銆佸弬鏁板氨鑳介€氳繃绫讳技鐨勮皟鐢ㄦ潵妯℃嫙鍑� c.SayHello 銆� - -閫氳繃瀵� gRPC 鐨勭畝鍗曞垎鏋愶紝鎴戜滑澶ф鐭ラ亾瑕佹€庝箞寮勪簡銆傝繕鍓╀笅涓€涓棶棰橈紝灏辨槸鎴戜滑鐨勮В鍐虫柟妗堟€庝箞鍜� dubbo-go 缁撳悎璧锋潵鍛紵 - -## 璁捐 - -鎴戜滑鍏堟潵鐪嬩竴涓� dubbo-go 鐨勬暣浣撹璁★紝鎬濊€冧竴涓嬶紝濡傛灉鎴戜滑瑕佸仛 gRPC 鐨勯€傞厤锛屽簲璇ユ槸鍦ㄥ摢涓眰娆′笂鍋氶€傞厤銆� - - -鎴戜滑鏍规嵁鍓嶉潰浠嬬粛鐨� gRPC 鐨勭浉鍏崇壒鎬у彲浠ョ湅鍑烘潵锛実RPC 宸茬粡瑙e喅浜� codec 鍜� transport 涓ゅ眰鐨勯棶棰樸€� - -鑰屼粠 cluster 寰€涓婏紝鏄剧劧 gRPC 娌℃湁娑夊強銆備簬鏄紝浠庤繖涓浘閲岄潰鎴戜滑灏卞彲浠ョ湅鍑烘潵锛岃鍋氳繖绉嶉€傞厤锛岄偅涔� protocol 杩欎竴灞傛槸鏈€鍚堥€傜殑銆傚嵆锛屾垜浠彲浠ュ鍚� dubbo protocol 閭h埇锛屾墿灞曞嚭鏉ヤ竴涓� grpc protocol 銆� - -杩欎釜 gRPC protocol 澶т綋涓婄浉褰撲簬涓€涓€傞厤鍣紝灏嗗簳灞傜殑 gRPC 鐨勫疄鐜板拰鎴戜滑鑷韩鐨� dubbo-go 杩炴帴鍦ㄤ竴璧枫€� - - - -## 瀹炵幇 - -鍦� dubbo-go 閲岄潰锛屽拰 gRPC 鐩稿叧鐨勪富瑕佹槸锛� - - - -鎴戜滑鐩存帴杩涘幓鐪嬬湅鍦� gRPC 灏忚妭閲岄潰鎻愬埌鐨勮鐐规槸濡備綍瀹炵幇鐨勩€� - -### server绔� - - - -杩欐牱鐪嬭捣鏉ワ紝杩樻槸寰堟竻鏅扮殑銆傚鍚� dubbo- go 鍏跺畠鐨� protocol 涓€鏍凤紝鍏堟嬁鍒� service 锛岃€屽悗閫氳繃 service 鏉ユ嬁鍒� serviceDesc 锛屽畬鎴愭湇鍔$殑娉ㄥ唽銆� - -娉ㄦ剰涓€涓嬩笂鍥炬垜绾㈢嚎鏍囧噯鐨� ds, ok := service.(DubboGrpcService) 杩欎竴鍙ャ€� - -涓轰粈涔堟垜璇磋繖涓湴鏂规湁鐐瑰鎬憿锛熸槸鍥犱负鐞嗚涓婃潵璇达紝鎴戜滑杩欓噷娉ㄥ唽鐨勮繖涓� service 瀹為檯涓婂氨鏄� protobuf 缂栬瘧涔嬪悗鐢熸垚鐨� gRPC 鏈嶅姟绔殑閭d釜 service 鈥斺€斿緢鏄剧劧锛屽崟绾殑缂栬瘧涓€涓� protobuf 鎺ュ彛锛屽畠鑲畾涓嶄細瀹炵幇 DubboGrpcService 鎺ュ彛锛� - - - -閭d箞 ds, ok := service.(DubboGrpcService) 杩欎竴鍙ワ紝绌剁珶鎬庝箞鎵嶈兘璁╁畠鑳藉鎵ц鎴愬姛鍛紵 - -鎴戜細鍦ㄥ悗闈㈢粰澶у鎻檽杩欎釜璋滃簳銆� - -## Client绔� - -dubbo-go 璁捐浜嗚嚜韬殑 Client 锛屼綔涓哄 gRPC 閲岄潰 Client 鐨勪竴绉嶆ā鎷熶笌灏佽锛� - - -娉ㄦ剰鐪嬶紝杩欎釜 Client 鐨勫畾涔変笌鍓嶉潰 greetClient 鐨勫畾涔夊強鍏剁浉浼笺€傚啀鐪嬩笅闈㈢殑 NewClient 鏂规硶锛岄噷闈篃鏃犻潪灏辨槸鍒涘缓浜嗚繛鎺� conn 锛岃€屽悗鍒╃敤 conn 閲屽垱寤轰簡涓€涓� Client 瀹炰緥銆� - -娉ㄦ剰鐨勬槸锛岃繖閲岄潰缁存姢鐨� invoker 瀹為檯涓婃槸涓€涓� stub 銆� - -褰撶湡姝e彂璧疯皟鐢ㄧ殑鏃跺€欙細 - - - -绾㈣壊妗嗘妗嗕綇鐨勫氨鏄叧閿楠ゃ€傚埄鐢ㄥ弽灏勪粠 invoker 鈥斺€斾篃灏辨槸 stub 鈥斺€旈噷闈㈡嬁鍒拌皟鐢ㄧ殑鏂规硶锛岃€屽悗閫氳繃鍙嶅皠璋冪敤銆� - -### 浠g爜鐢熸垚 - -鍓嶉潰鎻愬埌杩� ds, ok := service.(DubboGrpcService) 杩欎竴鍙ワ紝闈复鐨勯棶棰樻槸濡備綍璁� protobuf 缂栬瘧鐢熸垚鐨勪唬鐮佽兘澶熷疄鐜� DubboGrpcService 鎺ュ彛鍛紵 - -鏈変簺灏忎紮浼村彲鑳戒篃娉ㄦ剰鍒帮紝鍦ㄦ垜璐村嚭鏉ョ殑涓€浜涗唬鐮侀噷闈紝鍙嶅皠鎿嶄綔浼氭牴鎹悕瀛楁潵鑾峰彇method瀹炰緥锛屾瘮濡侼ewClient鏂规硶閲岄潰鐨刴ethod := reflect.ValueOf(impl).MethodByName("GetDubboStub")杩欎竴鍙ャ€傝繖涓€鍙ョ殑impl锛屽嵆鎸囨湇鍔$殑瀹炵幇锛屼篃鏄� protobuf 閲岄潰缂栬瘧鍑烘潵鐨勶紝鎬庝箞璁� protobuf 缂栬瘧鍑烘潵鐨勪唬鐮侀噷闈㈠惈鏈夎繖涓� GetDubboStub 鏂规硶鍛紵 - -鍒拌繖閲岋紝绛旀宸茬粡鍛间箣娆插嚭浜嗭細淇敼 protobuf 缂栬瘧鐢熸垚浠g爜鐨勯€昏緫锛� - -搴嗗垢鐨勬槸锛屽湪 protobuf 閲岄潰鍏佽鎴戜滑閫氳繃鎻掍欢鐨勫舰寮忔墿灞曟垜浠嚜宸辩殑浠g爜鐢熸垚鐨勯€昏緫銆� - -鎵€浠ユ垜浠彧闇€瑕佹敞鍐屼竴涓垜浠嚜宸辩殑鎻掍欢锛� - - -鐒跺悗杩欎釜鎻掍欢浼氭妸鎴戜滑鎵€闇€瑕佺殑浠g爜缁欏祵鍏ヨ繘鍘汇€傛瘮濡傝宓屽叆`GetDubboStub`鏂规硶锛� - - -杩樻湁`DubboGrpcService`鎺ュ彛锛� - - - -杩欎釜涓滆タ锛屽睘浜庨毦鑰呬笉浼氫細鑰呬笉闅俱€傚氨鏄鏋滀綘涓嶇煡閬撳彲浠ラ€氳繃`plugin`鐨勫舰寮忔潵淇敼鐢熸垚鐨勪唬鐮侊紝閭e氨鏄湡闅撅紱浣嗘槸濡傛灉鐭ラ亾浜嗭紝杩欎釜涓滆タ灏卞緢绠€鍗曚簡鈥斺€旀棤闈炲氨鏄按纾ㄥ伐澶舰浜嗐€� - -**浣滆€呬俊鎭細**閭撴槑锛屾瘯涓氫簬鍗椾含澶у锛屽氨鑱屼簬 eBay Payment 閮ㄩ棬锛岃礋璐i€€娆句笟鍔″紑鍙戙€� - -缂栬В鐮� 鑷劧璇█澶勭悊 Dubbo Java 搴旂敤鏈嶅姟涓棿浠� Go Spring \ No newline at end of file diff --git a/doc/md/rpc/dubbo-go-trusted-RPC-call-implementation.md b/doc/md/rpc/dubbo-go-trusted-RPC-call-implementation.md deleted file mode 100644 index 7b0b147a777dd5f47610b8ca3f010b0ae9ba0760..0000000000000000000000000000000000000000 --- a/doc/md/rpc/dubbo-go-trusted-RPC-call-implementation.md +++ /dev/null @@ -1,136 +0,0 @@ -# [dubbo-go 鍙俊 RPC 璋冪敤瀹炵幇](https://mp.weixin.qq.com/s/30CjBKheCZClKaZCw1DRZA) - -Apache Dubbo/Dubbo-Go 浣滀负闃块噷宸村反寮€婧愮殑涓€娆炬湇鍔℃不鐞嗘鏋讹紝鍥犲叾閫傚簲 Java/Go 寮€鍙戣€呴潰鍚戞帴鍙g殑缂栫▼涔犳儻銆佸畬鍏ㄩ€忔槑鐨勮皟鐢ㄦ柟寮忋€佷紭瓒婄殑鎬ц兘浠ュ強寮哄ぇ鐨勬墿灞曟€х瓑浼樼偣锛屽湪鍥藉唴浣跨敤闈炲父骞挎硾銆傞櫎姝や箣澶栵紝Dubbo 寮€婧愮増鏈師鐢熼泦鎴愪簡寰堝寮€绠卞嵆鐢ㄧ殑鏈嶅姟娌荤悊鍔熻兘锛屽寘鎷摼璺拷韪紝璺敱銆佽礋杞藉潎琛°€佹湇鍔℃敞鍐屽彂鐜般€佺洃鎺с€佽璇佺瓑銆� - -鏈枃灏嗚瑙e浣曞湪 Dubbo/Dubbo-Go 涓疄鐜扮伒娲汇€佸畨鍏ㄥ拰楂樻晥鐨勮韩浠介獙璇佸拰鎺堟潈鏂规銆� - -## 瀹氫箟鍙俊 - -浣曚负鍙俊锛熷彲淇$殑瀹氫箟寰堝箍娉涳紝渚濆満鏅笉鍚屾湁涓嶅悓鐨勫畾涔夈€傚湪寰湇鍔℃灦鏋勪腑锛屾瘡涓湇鍔¢兘鏄棤鐘舵€佺殑锛屽涓湇鍔′箣闂翠笉鍙俊锛屼负浜嗗疄鐜版湇鍔¢棿鏇村ソ鍦伴殧绂伙紝鏈嶅姟闂村簲杩涜璁よ瘉鍜岄壌鏉冦€� - -濡傛敮浠樹箣绫荤殑涓氬姟鍦烘櫙锛屽畨鍏ㄦ€ф晱鎰熺殑鏈嶅姟浼氭湁闄愬埗鍖垮悕绯荤粺璋冪敤鐨勯渶姹傦紝鍏朵粬涓氬姟鍦ㄦ帴鍏ヨ绫绘晱鎰熶笟鍔′箣鍓嶏紝闇€瑕侀€氳繃瀹℃壒鏂瑰彲姝e父璋冪敤锛岃繖灏遍渶瑕佸杩欑被鏁忔劅鏈嶅姟杩涜鏉冮檺绠℃帶銆傚敖绠� Dubbo 寮€婧愮増鏈腑鏀寔 Token 鏂瑰紡鐨勯壌鏉冨疄鐜帮紝浣嗘槸璇ュ疄鐜版柟寮忔€讳綋鏉ヨ瀹夊叏鎬у苟涓嶉珮锛屽苟涓旀棤娉曟弧瓒虫垜浠渶瑕佸姩鎬佷笅鍙戜互鍙婂彉鏇寸殑鐏垫椿鎬ч渶姹傘€� - -閽堝浜庢锛屾垜浠唴閮ㄧ潃閲嶄粠宸╁浐瀹夊叏鎬у拰鎷撳睍鐏垫椿鎬у眰闈㈤噸鏂拌璁′簡涓€濂� Dubbo/Dubbo-Go 鐨勬湇鍔¢棿璋冪敤鐨勯壌鏉冭璇佸姛鑳姐€傛湰鏂囨垜浠皢涓昏浠庡疄鐜板眰闈㈣瑙e叾澶ц嚧瀹炵幇鎬濊矾銆� - -## 鍙俊鏂规 - -鎬讳綋鑰岃█锛岄壌鏉冭璇佷富瑕佽璁轰互涓嬩袱涓棶棰橈細 - -1.韬唤璁よ瘉锛氭寚楠岃瘉搴旂敤鐨勮韩浠斤紝姣忎釜搴旂敤鍦ㄥ叾鐢熷懡鍛ㄦ湡鍐呭彧鏈夊敮涓€韬唤锛屾棤娉曞彉鏇村拰浼€犮€� - -2.鏉冮檺閴村畾锛氭牴鎹韩浠戒俊鎭壌瀹氭潈闄愭槸鍚︽弧瓒宠皟鐢ㄣ€傛潈闄愮矑搴﹀彲浠ヨ繘琛屾帶鍒躲€� - -鎴戜滑閫氳繃 Access Key ID/Secret Access Key (鍚庢枃绠€绉颁负 AK/SK) 淇℃伅鏍囪瘑搴旂敤鍜屽簲鐢ㄤ箣闂寸殑韬唤鍏崇郴銆備緥濡備笂娓� 搴旂敤 A 渚濊禆涓嬫父 鏈嶅姟 B 鍜� C锛屽垯 A 瀵� B 鍜� C 鍒嗗埆鏈変竴濂� AK/SK锛屽叾鐩镐簰鐙珛娌℃湁浠讳綍鍏崇郴锛屽氨绠� A 鏈嶅姟 鐨� AK/SK 淇℃伅娉勬紡锛屼篃鏃犳硶閫氳繃璇� AK/SK 淇℃伅璋冪敤鍏朵粬鐨勬湇鍔°€� - -鍦ㄦ潈闄愰壌瀹氭柟闈篃鍊熼壌浜嗗叕鏈変簯寮€鏀� API 甯哥敤鐨� AK/SK 绛惧悕鏈哄埗銆傚湪璇锋眰杩囩▼涓娇鐢� SK 绛惧悕鐢熸垚 SigningKey锛屽苟閫氳繃 Dubbo 鐨� attachment 鏈哄埗灏嗛澶栫殑鍏冩暟鎹俊鎭互鍙� SigningKey 浼犺緭鍒版湇鍔$锛屼氦鐢辨湇鍔$璁$畻鍜岄獙绛撅紝楠岀閫氳繃鏂硅兘姝e父澶勭悊鍜屽搷搴斻€� - -绛惧悕杩囩▼涓昏閫氳繃濡備笅涓変釜鏂瑰紡杩涜鍔犲己 SigningKey 鐨勫彲闈犳€у拰瀹夊叏鎬с€� - -1銆侀獙璇佽姹傝€呯殑韬唤锛岀鍚嶄細閫氳繃瀵瑰簲搴旂敤鐨� SK 浣滀负鍔犲瘑瀵嗛挜瀵硅姹傚厓鏁版嵁(浠ュ強鍙傛暟)杩涜鍔犲瘑锛屼繚璇佺鍚嶇殑鍞竴鎬у拰涓嶅彲浼€犳€с€� -2銆佹敮鎸佸鍙傛暟杩涜璁$畻绛惧悕锛岄槻姝㈤潪娉曠鏀癸紝鑻ヨ姹傚弬鏁板湪浼犺緭杩囩▼涓伃鍒伴潪娉曠鏀癸紝鍒欐敹鍒拌姹傚悗鏈嶅姟绔獙绛惧尮閰嶅皢澶辫触锛岃韩浠芥牎楠屾棤娉曢€氳繃锛屼粠鑰岄槻姝㈣姹傚弬鏁拌绡℃敼銆傝€冭檻鍒扮鍚嶄互鍙婇獙绛捐繃绋嬩腑鍔犲叆璇锋眰鍙傛暟鐨勮绠楀彲鑳戒細褰卞搷鎬ц兘锛岃繖涓繃绋嬫槸鍙€夌殑銆� -3銆侀槻姝㈤噸鏀炬敾鍑伙紝姣忎竴娆¤姹傜敓鎴愮殑 SigningKey 閮藉叿鏈夋寚瀹氱殑鏈夋晥鏃堕棿锛屽璇锋眰琚埅鑾凤紝璇ヨ姹傛棤娉曞湪鏈夋晥鏃堕棿澶栬繘琛岃皟鐢紝涓€瀹氱▼搴﹂伩鍏嶄簡閲嶆斁鏀诲嚮銆� - -鍚屾椂涓轰簡鍘绘帀鏄庢枃閰嶇疆锛岄槻姝� AK/SK 淇℃伅娉勬紡锛屾垜浠€氳繃閴存潈绯荤粺鍒嗗彂鍜岀鐞嗘墍鏈� AK/SK 淇℃伅銆傞€氳繃瀵规帴鍐呴儴瀹℃壒娴佺▼锛岃揪鍒版祦绋嬪寲鍜岃鑼冨寲锛岄渶瑕侀壌鏉冪殑搴旂敤浼氶€氳繃鍚姩鑾峰彇鐨勬柟寮忔媺褰撳墠搴旂敤鍒嗗彂鍑哄幓鎴栬€呮槸宸茶鎺堟潈鐨� AK/SK 淇℃伅銆傝繖绉嶆柟寮忎篃甯︽潵浜嗗彟涓€绉嶅ソ澶勶紝鏂板銆佸悐閿€浠ュ強鏇存柊鏉冮檺淇℃伅涔熸棤闇€閲嶅惎搴旂敤銆� - -## 鍙俊娴佺▼ - -缁撳悎涓婇潰鐨勮繖浜涢渶姹傚拰鏂规锛屾暣涓帴鍏ュ拰閴存潈娴佺▼鍥惧涓嬫墍绀猴細 - - - -鏁翠綋娴佺▼濡備笅锛� - -1銆佷娇鐢ㄨ鍔熻兘鐨勫簲鐢ㄩ渶瑕佹彁鍓嶇敵璇峰搴旂殑璇佷功锛屽苟鍚戞彁渚涙湇鍔$殑搴旂敤鎻愪氦鐢宠璁块棶宸ュ崟锛岀敱鍙屾柟璐熻矗浜哄鎵归€氳繃鍚庯紝璇锋眰閴存潈鏈嶅姟涓績鑷姩鐢熸垚閿€煎銆� - -2銆佸紑鍚壌鏉冭璇佺殑鏈嶅姟鍦ㄥ簲鐢ㄥ惎鍔ㄤ箣鍚庯紝浼氳繍琛屼竴涓悗鍙扮嚎绋嬶紝闀胯疆璇㈣繙閴存潈鏈嶅姟涓績锛屾煡璇㈡槸鍚︽湁鏂板鏉冮檺鍙樺姩淇℃伅锛屽鏋滄湁鍒欒繘琛屽叏閲�/澧為噺鐨勬媺鍙栥€� -3銆佷笂娓稿簲鐢ㄥ湪璇锋眰闇€瑕侀壌鏉冪殑鏈嶅姟鏃讹紝浼氶€氳繃 SK 浣滀负绛惧悕绠楁硶鐨� key锛屽鏈璇锋眰鐨勫厓鏁版嵁淇℃伅鐢氳嚦鏄弬鏁颁俊鎭繘琛岃绠楀緱鍒扮鍚嶏紝閫氳繃 Dubbo 鍗忚 Attachment 瀛楁浼犻€佸埌瀵圭锛岄櫎姝や箣澶栬繕鏈夎姹傛椂闂存埑銆丄K 淇℃伅绛変俊鎭€� -4銆佷笅娓稿簲鐢ㄥ湪澶勭悊閴存潈鏈嶅姟鏃朵細瀵硅姹傞獙绛撅紝楠岀閫氳繃鍒欑户缁鐞嗚姹傦紝鍚﹀垯鐩存帴杩斿洖寮傚父銆� - -鍏朵腑闇€瑕佽鏄庣殑鏄涓夋锛屼娇鐢ㄩ壌鏉冩湇鍔$殑搴旂敤鍜岄壌鏉冩湇鍔′腑蹇冪殑浜や簰闇€閫氳繃 HTTPS 鐨勫弻鍚戣璇侊紝骞跺湪 TLS 淇¢亾涓婅繘琛屾暟鎹氦浜掞紝淇濊瘉 AK/SK 淇℃伅浼犺緭鐨勫畨鍏ㄦ€с€� - -璇ユ柟妗堢洰鍓嶅凡缁忔湁 Java/Go 瀹炵幇锛屽潎宸插悎骞跺埌 dubbo/dubbo-go銆傞櫎浜嗛粯璁ょ殑 Hmac 绛惧悕绠楁硶瀹炵幇涔嬪锛屾垜浠皢绛惧悕鍜岃璇佹柟娉曡繘琛屾娊璞★紝浠� dubbo-go 涓殑瀹炵幇涓轰緥锛� - -```go -// Authenticator -type Authenticator interface { - // Sign - // give a sign to request - Sign(protocol.Invocation, *common.URL) error - // Authenticate - // verify the signature of the request is valid or not - Authenticate(protocol.Invocation, *common.URL) error -} -``` - -浣跨敤鑰呭彲閫氳繃 SPI 鏈哄埗瀹氬埗绛惧悕鍜岃璇佹柟寮忥紝浠ュ強閫傞厤鍏徃鍐呴儴鍩虹璁炬柦鐨勫瘑閽ユ湇鍔′笅鍙� AK/SK銆� - -## 绀轰緥 - -浠� Helloworld 绀轰緥 涓殑浠g爜鎺ュ叆褰撳墠绀惧尯鐗堟湰涓殑榛樿閴存潈璁よ瘉鍔熻兘瀹炵幇涓轰緥锛� - -### Helloworld 绀轰緥锛� - -https://github.com/apache/dubbo-samples/tree/master/golang/helloworld/dubbo - -鍦ㄦ棤闇€鏀瑰彉浠g爜鐨勬儏鍐典笅锛屽彧闇€瑕佸湪閰嶇疆涓婂鍔犻澶栫殑鐩稿叧閴存潈閰嶇疆鍗冲彲锛宒ubbo-go 鏈嶅姟绔厤缃ず渚嬪涓嬶細 - -```yml -services: - "UserProvider": - # 鍙互鎸囧畾澶氫釜registry锛屼娇鐢ㄩ€楀彿闅斿紑;涓嶆寚瀹氶粯璁ゅ悜鎵€鏈夋敞鍐屼腑蹇冩敞鍐� - registry: "hangzhouzk" - protocol: "dubbo" - # 鐩稿綋浜巇ubbo.xml涓殑interface - interface: "com.ikurento.user.UserProvider" - loadbalance: "random" - # 鏈湇鍔″紑鍚痑uth - auth: "true" - # 鍚敤auth filter锛屽璇锋眰杩涜楠岀 - filter: "auth" - # 榛樿瀹炵幇閫氳繃閰嶇疆鏂囦欢閰嶇疆AK銆丼K - params: - .accessKeyId: "SYD8-23DF" - .secretAccessKey: "BSDY-FDF1" - warmup: "100" - cluster: "failover" - methods: - - name: "GetUser" - retries: 1 - loadbalance: "random" -``` - -dubbo-go 瀹㈡埛绔厤缃ず渚嬪涓嬶細 - -```yml -references: - "UserProvider": - # 鍙互鎸囧畾澶氫釜registry锛屼娇鐢ㄩ€楀彿闅斿紑;涓嶆寚瀹氶粯璁ゅ悜鎵€鏈夋敞鍐屼腑蹇冩敞鍐� - registry: "hangzhouzk" - protocol: "dubbo" - interface: "com.ikurento.user.UserProvider" - cluster: "failover" - # 鏈湇鍔″紑鍚痵ign filter锛岄渶瑕佺鍚� - filter: "sign" - # 榛樿瀹炵幇閫氳繃閰嶇疆鏂囦欢閰嶇疆AK銆丼K - params: - .accessKeyId: "SYD8-23DF" - .secretAccessKey: "BSDY-FDF1" - methods: - - name: "GetUser" - retries: 3 -``` - -鍙互鐪嬪埌锛宒ubbo-go 鎺ュ叆閴存潈璁よ瘉鐨勫姛鑳戒篃鍗佸垎绠€鍗曘€傞渶瑕佽ˉ鍏呰鏄庣殑鏄紝閰嶇疆鏂囦欢鏂囦欢涓� ak/sk 閮藉姞浜嗙壒娈婂墠缂€ "."锛屾槸涓轰簡璇存槑璇ュ瓧娈垫槸鏁忔劅淇℃伅锛屼笉鑳藉湪鍙戣捣缃戠粶璇锋眰鏃朵紶杈撳嚭鍘伙紝鐩稿叧浠g爜鍙弬闃� dubbo-go-pr-509銆� - -dubbo-go-pr-509锛� -https://github.com/apache/dubbo-go/pull/509 - -## 鎬荤粨 - -Apache Dubbo 浣滀负涓€娆捐€佽€屽讥鏂扮殑鏈嶅姟娌荤悊妗嗘灦锛屾棤璁烘槸鍏惰嚜韬繕鏄叾鐢熸€侀兘杩樺湪椋為€熻繘鍖栦腑銆傛湰鏂囨弿杩扮殑鏈€鏂板疄鐜扮殑鍙俊鏈嶅姟璋冪敤锛屾槸涓轰簡閬垮厤鏁忔劅鎺ュ彛琚尶鍚嶇敤鎴疯皟鐢ㄨ€屽湪 SDK 灞傞潰鎻愪緵鐨勯澶栦繚闅滐紝鍦� RPC 灞傞潰淇濋殰瀹夊叏鎬с€� - -dubbo-go 浣滀负 Dubbo 鐢熸€佷腑鍙戝睍鏈€蹇殑鎴愬憳锛岀洰鍓嶅熀鏈笂淇濇寔涓� Dubbo 榻愬ご骞惰繘鐨勬€佸娍銆俤ubbo-go 绀惧尯閽夐拤缇ゅ彿涓� 23331795锛� 娆㈣繋浣犵殑鍔犲叆銆� - -- 浣滆€呬俊鎭細 - - 閮戞辰瓒咃紝Apache Dubbo/Dubbo-Go committer锛孏ithubID: CodingSinger锛岀洰鍓嶅氨鑱屼簬涓婃捣鐖卞鑹虹鎶€鏈夐檺鍏徃锛孞ava/Golang 寮€鍙戝伐绋嬪笀銆� diff --git a/doc/md/service-governance/dubbo-go-metrics-design.md b/doc/md/service-governance/dubbo-go-metrics-design.md deleted file mode 100644 index d2234440c95e8391a0a9f425541ca3c8050b26b8..0000000000000000000000000000000000000000 --- a/doc/md/service-governance/dubbo-go-metrics-design.md +++ /dev/null @@ -1,111 +0,0 @@ -# [eBay 閭撴槑锛歞ubbo-go 涓� metrics 鐨勮璁(https://mp.weixin.qq.com/s/_ibXd2z1RqjOJwk7jMAwig) - -鍙戝竷浜庯細2020 骞� 4 鏈� 22 鏃� 17:15 - -鏈€杩戝洜涓鸿鍦� Apache/dubbo-go锛堜互涓嬬畝绉� dubbo-go 锛夐噷闈㈠疄鐜扮被浼肩殑杩欎釜 metrics 鍔熻兘锛屼簬鏄姳浜嗗緢澶氭椂闂村幓浜嗚В鐜板湪 Dubbo 閲岄潰鐨� metrics 鏄€庝箞瀹炵幇鐨勩€傝閮ㄥ垎锛屽疄闄呬笂鏄鏀惧湪涓€涓嫭绔嬬殑椤圭洰閲岄潰锛屽嵆 metrics 銆� - -鎬讳綋涓婃潵璇达紝Dubbo 鐨� metrics 鏄竴涓粠璁捐鍒板疄鐜伴兘闈炲父浼樼鐨勬ā鍧楋紝鐞嗚涓婃潵璇达紝澶ч儴鍒嗙殑 Java 椤圭洰鏄彲浠ョ洿鎺ヤ娇鐢� metrics 鐨勩€備絾涔熷洜涓哄吋椤炬€ц兘銆佹墿灞曟€х瓑鍚勭闈炲姛鑳界壒鎬э紝鎵€浠ュ垵鐪嬩唬鐮佷細鏈夌鏃犱粠涓嬫墜鐨勬劅瑙夈€� - -浠婂ぉ杩欑瘒鏂囩珷灏嗕細浠庢瘮杈冨ぇ鐨勬蹇靛拰鎶借薄涓婅璁轰竴涓� dubbo-go 涓殑 metrics 妯″潡鐨勮璁♀€斺€斿疄闄呬笂涔熷氨鏄� Dubbo 涓殑 metrics 鐨勮璁°€傚洜涓烘垜浠呬粎鏄皢 Dubbo 閲岄潰鐨勭浉鍏冲唴瀹瑰湪 dubbo-go 涓鍒朵竴浠姐€� - -鐩墠 dubbo-go 鐨� metrics 鍒氬垰寮€濮嬭捣姝ワ紝绗竴涓� PR 鏄細 - -## 鎬讳綋璁捐 - -**Metric** - -瑕佹兂鐞嗚В metrics 鐨勮璁★紝棣栧厛瑕佺悊瑙o紝鎴戜滑闇€瑕佹敹闆嗕竴浜涗粈涔堟暟鎹€傛垜浠彲浠ヨ交鏄撳垪涓惧嚭鏉ュ湪 RPC 棰嗗煙閲岄潰鎴戜滑鎵€鍏冲績鐨勫悇绉嶆寚鏍囷紝璇稿姣忎釜鏈嶅姟鐨勮皟鐢ㄦ鏁帮紝鍝嶅簲鏃堕棿锛涘鏋滄洿鍔犵粏鑷翠竴鐐癸紝杩樻湁鍚勭鍝嶅簲鏃堕棿鐨勫垎甯冿紝骞冲潎鍝嶅簲鏃堕棿锛�999 绾库€︹€� - -浣嗘槸涓婇潰鍒椾妇鐨勬槸浠庢暟鎹殑鍐呭涓婂垝鍒嗙殑銆� metrics 鍦ㄦ娊璞′笂锛屽垯鏄憭寮冧簡杩欑鍒掑垎鏂瑰紡锛岃€屾槸缁撳悎浜嗘暟鎹殑鐗规€у拰琛ㄧ幇褰㈠紡缁煎悎鍒掑垎鐨勩€� - -浠庢簮鐮侀噷闈㈠緢瀹规槗鎵惧埌杩欑鍒掑垎鐨勬娊璞°€� - -metrics 璁捐浜� Metric 鎺ュ彛浣滀负鎵€鏈夋暟鎹殑椤剁骇鎶借薄锛� - -鍦� Dubbo 閲岄潰锛屽叾姣旇緝鍏抽敭鐨勫瓙鎺ュ彛鏄細 - -涓轰簡澶у鐞嗚В锛岃繖閲屾垜鎶勪竴涓嬭繖浜涙帴鍙g殑鐢ㄩ€旓細 - -* Gauge: 涓€绉嶅疄鏃舵暟鎹殑搴﹂噺锛屽弽鏄犵殑鏄灛鎬佺殑鏁版嵁锛屼笉鍏锋湁绱姞鎬э紝渚嬪褰撳墠 JVM 鐨勭嚎绋嬫暟锛� -* Counter: 璁℃暟鍣ㄥ瀷鎸囨爣锛岄€傜敤浜庤褰曡皟鐢ㄦ€婚噺绛夌被鍨嬬殑鏁版嵁锛� -* Histogram : 鐩存柟鍒嗗竷鎸囨爣锛屼緥濡傦紝鍙互鐢ㄤ簬缁熻鏌愪釜鎺ュ彛鐨勫搷搴旀椂闂达紝鍙互灞曠ず 50%, 70%, 90% 鐨勮姹傚搷搴旀椂闂磋惤鍦ㄥ摢涓尯闂村唴锛� -* Meter: 涓€绉嶇敤浜庡害閲忎竴娈垫椂闂村唴鍚炲悙鐜囩殑璁¢噺鍣ㄣ€備緥濡傦紝涓€鍒嗛挓鍐咃紝浜斿垎閽熷唴锛屽崄浜斿垎閽熷唴鐨� qps 鎸囨爣锛� -* Timer: Timer 鐩稿綋浜� Meter+Histogram 鐨勭粍鍚堬紝鍚屾椂缁熻涓€娈典唬鐮侊紝涓€涓柟娉曠殑 qps锛屼互鍙婃墽琛屾椂闂寸殑鍒嗗竷鎯呭喌锛� - -鐩墠 dubbo-go 鍙疄鐜颁簡 FastCompass 锛屽畠涔熸槸 Metric 鐨勫瓙绫伙細 - -杩欎釜鎺ュ彛鍔熻兘寰堢畝鍗曪紝灏辨槸鐢ㄤ簬鏀堕泦涓€娈垫椂闂翠箣鍐呯殑 subCategory 鎵ц鐨勬鏁板拰鍝嶅簲鏃堕棿銆� subCategory 鏄竴涓瘮杈冨娉涚殑姒傚康锛屾棤璁烘槸鍦� Dubbo 杩樻槸鍦� dubbo-go 閲岄潰锛屼竴涓吀鍨嬬殑 subCategory 灏变細鏄煇涓湇鍔°€� - -杩欓噷鐨勮璁¤鐐瑰湪浜庯紝瀹冩槸浠庝粈涔堣搴︿笂鍘诲仛杩欎簺鏁版嵁鐨勬娊璞$殑銆� - -寰堝浜哄湪寮€鍙戣繖绉嶉噰闆嗘暟鎹殑鐩稿叧绯荤粺鎴栬€呭姛鑳界殑鏃跺€欙紝鏈€瀹规槗闄峰叆鐨勫氨鏄粠鏁版嵁鍐呭涓婂仛鎶借薄锛屼緥濡傛娊璞′竴涓帴鍙o紝閲岄潰鐨勬柟娉曞氨鏄幏寰楁湇鍔$殑璋冪敤娆℃暟鎴栬€呭钩鍧囧搷搴旀椂闂寸瓑銆� - -杩欑鎶借薄骞堕潪涓嶅彲浠ワ紝灏ゅ叾鏄湪绠€鍗曠郴缁熼噷闈紝杩橀潪甯稿ソ鐢ㄣ€傚敮鐙湪閫氱敤鎬у拰鎵╁睍鎬т笂瑕佸樊寰堝銆� - -**MetricManager** - -鍦ㄦ垜浠畾涔変簡 Metric 涔嬪悗锛屽緢瀹规槗灏辨兂鍒帮紝鎴戣鏈変竴涓笢瑗挎潵绠$悊杩欎簺 Metric 銆傝繖灏辨槸 MetricManager 鈥斺€斿搴斿埌 Dubbo 閲岄潰鐨� IMetricManager 鎺ュ彛銆� - -MetricManager 鎺ュ彛鐩墠鍦� dubbo-go 閲岄潰杩樺緢绠€鍗曪細 - -鏈川涓婃潵璇达紝鎴戝湪鍓嶉潰鎻愬埌鐨勯偅浜� Metric 鐨勫瓙绫伙紝閮藉彲浠ヤ粠杩欎釜 MetricManager 閲岄潰鎷垮埌銆傚畠鏄澶栫殑鍞竴鍏ュ彛銆� - -鍥犳鏃犺鏄笂鎶ラ噰闆嗙殑鏁版嵁锛岃繕鏄煇浜涘姛鑳借鐢ㄨ繖浜涢噰闆嗙殑鏁版嵁锛屾渶閲嶈鐨勫氨鏄幏寰椾竴涓� MetricManager 鐨勫疄渚嬨€備緥濡傛垜浠渶杩戞鍦ㄥ紑鍙戠殑鎺ュ叆 Prometheus 灏辨槸鎷垮埌杩欎釜 MetriManger 瀹炰緥锛岃€屽悗浠庨噷闈㈡嬁鍒� FastCompass 鐨勫疄渚嬶紝鑰屽悗閲囬泦杩欎簺鏁版嵁锛� - -**MetricRegistry** - -MetricRegistry 鏄竴涓 Metric 闆嗗悎鐨勬娊璞°€� MetricManager 鐨勯粯璁ゅ疄鐜伴噷闈紝灏辨槸浣跨敤 MetricRegistry 鏉ョ鐞� Metric 鐨�: - -鎵€浠ワ紝鏈川涓婂畠灏辨槸鎻愪緵浜嗕竴浜涙敞鍐� Metric 鐒跺悗鍐嶄粠閲岄潰鎹炲嚭鏉ョ殑鏂规硶銆� - -浜庢槸锛岃繖灏辨湁涓€涓棶棰樹簡锛氫负浠€涔堟垜鍦ㄦ湁浜� MetricManager 涔嬪悗锛岃繕鏈夋湁涓€涓� MetricRegistry锛熶技涔庤繖涓や釜鍔熻兘鏈変簺閲嶅彔锛� - -绛旀澶ф鏄袱涓柟闈細 -1銆侀櫎浜嗙鐞嗘墍鏈夌殑 Metric 涔嬪锛岃繕鎵挎媴鐫€棰濆鐨勫姛鑳斤紝杩欎簺鍔熻兘鍏稿瀷鐨勫氨鏄� IsEnabled 銆傝€屽疄闄呬笂锛屽湪鏈潵鎴戜滑浼氳祴浜堝畠绠$悊鐢熷懡鍛ㄦ湡鐨勮矗浠伙紝姣斿璇村湪 Dubbo 閲岄潰锛岃鎺ュ彛灏辫繕鏈変竴涓� clear 鏂规硶锛� -2銆� metrics 閲岄潰杩樻湁涓€涓� group 鐨勬蹇碉紝鑰岃繖鍙兘鐢� MetricManager 鏉ヨ繘琛岀鐞嗭紝鑷冲皯浜ょ粰 MetricRegistry 鏄笉鍚堥€傜殑銆� - -metrics 鐨� group 璇磋捣鏉ヤ篃寰堢畝鍗曘€傛瘮濡傚湪 Dubbo 妗嗘灦閲岄潰閲囬泦鐨勬暟鎹紝閮戒細褰掑睘浜� Dubbo 杩欎釜 group 銆備篃灏辨槸璇达紝濡傛灉鎴戞兂灏嗛潪妗嗘灦灞傞潰閲囬泦鐨勬暟鎹€斺€旀瘮濡傜函绮圭殑涓氬姟鏁版嵁鈥斺€斿垎闅斿嚭鏉ワ紝灏卞彲浠ュ€熺敤涓€涓� business group 銆傚張鎴栬€呮垜閲囬泦鍒扮殑鏈哄櫒鑷韩鐨勬暟鎹紝鍙互灏嗗叾褰掔被鍒� system 杩欎釜 group 涓嬨€� - -鎵€浠� MetricManger 鍜� MetricRegistry 鐨勫叧绯绘槸锛� - -Clock 鎶借薄鏄竴涓垵鐪嬫病浠€涔堢敤锛屽啀鐪嬩細瑙夊緱鍏舵娊璞$殑寰堝ソ銆侰lock 閲岄潰灏变袱涓柟娉曪細 - -涓€涓槸鑾峰緱鏃堕棿鎴筹紝鍙﹀涓€涓垯鏄幏寰楁椂闂村懆鏈� (Tick)銆傛瘮濡傞€氬父閲囬泦鏁版嵁鍙兘鏄瘡涓€鍒嗛挓閲囬泦涓€娆★紝鎵€浠ヤ綘寰楃煡閬撶幇鍦ㄥ鍦ㄥ摢涓椂闂村懆鏈熼噷闈€€侰lock 灏辨彁渚涗簡杩欑鎶借薄銆� - -寰堝浜哄湪瀹炵幇鑷繁鐨勮繖绉� metrics 鐨勬鏋剁殑鏃跺€欙紝澶у鏁伴兘鏄洿鎺ヤ娇鐢ㄧ郴缁熺殑鏃堕挓锛屼篃灏辨槸绯荤粺鐨勬椂闂存埑銆備簬鏄墍鏈夌殑 Metic 鍦ㄩ噰闆嗘暟鎹垨鑰呬笂鎶ユ暟鎹殑鏃跺€欙紝涓嶅緱涓嶈嚜宸卞幓澶勭悊杩欑鏃堕挓鏂归潰鐨勯棶棰樸€� - -杩欐牱涓嶅悓鐨� Metric 涔嬮棿灏卞緢闅惧仛鍒版椂閽熺殑鍚屾銆傛瘮濡傝鍙兘鍦ㄦ煇涓� Metric1 閲岄潰锛岄噰闆嗗懆鏈熸槸褰撳墠杩欎竴鍒嗛挓锛岃€� Metric2 鏄綋鍓嶈繖涓€鍒嗛挓鐨勭涓夊崄绉掑埌涓嬩竴鍒嗛挓鐨勭涓夊崄绉掋€傝櫧鐒跺畠浠兘鏄竴鍒嗛挓閲囬泦涓€娆★紝浣嗘槸杩欎釜鍛ㄦ湡灏卞涓嶄笂浜嗐€� - -鍙﹀涓€涓湁鎰忔€濈殑鍦版柟鍦ㄤ簬锛孋lock 鎻愪緵鐨勮繖绉嶆娊璞★紝鍏佽鎴戜滑涓嶅繀鐪熺殑鎸夌収鐜板疄鏃堕棿鐨勬椂闂存埑鏉ュ鐞嗐€傛瘮濡傝锛屽彲浠ヨ€冭檻鎸夌収 CPU 鐨勮繍琛屾椂闂存潵璁捐 Clock 鐨勫疄鐜般€� - -## 渚嬪瓙 - -灏辩敤杩欎竴娆� PR 鐨勫唴瀹规潵灞曠ず涓€涓嬭繖涓璁°€� - -鍦� dubbo-go 閲岄潰杩欐瀹炵幇浜� metricsFilter 锛屽畠涓昏灏辨槸鏀堕泦璋冪敤娆℃暟鍜屽搷搴旀椂闂达紝鍏舵牳蹇冩槸锛� - -report 鍏跺疄灏辨槸鎶� metrics reports 缁� MetricManager 锛� - -鎵€浠ワ紝杩欓噷闈㈠彲浠ョ湅鍑烘潵锛屽鏋滄垜浠鏀堕泦浠€涔堟暟鎹紝涔熸槸瑕佸厛鑾峰緱 MetricManager 鐨勫疄渚嬨€� - -FastCompass 鐨勫疄鐜伴噷闈細灏嗚繖涓€娆¤皟鐢ㄧ殑鏈嶅姟鍙婂叾鍝嶅簲鏃堕棿淇濆瓨涓嬫潵銆傝€屽悗鍦ㄩ渶瑕佺殑鏃跺€欏啀鍙栧嚭鏉ャ€� - -鎵€璋撶殑闇€瑕佺殑鏃跺€欙紝閫氬父灏辨槸涓婃姤缁欑洃鎺х郴缁熺殑鏃跺€欍€傛瘮濡傚墠闈㈢殑鎻愬埌鐨勪笂鎶ョ粰 Prometheus銆� - -鎵€浠ヨ繖涓祦绋嬪彲浠ユ娊璞¤〃杈句负锛� - -杩欐槸涓€涓洿鍔犲娉涚殑鎶借薄銆備篃灏辨槸鎰忓懗鐫€锛屾垜浠櫎浜嗗彲浠ヤ粠杩欎釜 metricFilter 閲岄潰鏀堕泦鏁版嵁锛屼篃鍙互浠庤嚜韬殑涓氬姟閲岄潰鍘绘敹闆嗘暟鎹€傛瘮濡傝缁熻鏌愭浠g爜鐨勬墽琛屾椂闂达紝涓€鏍峰彲浠ヤ娇鐢� FastCompass 銆� - -鑰岄櫎浜� Prometheus 锛屽鏋滅敤鎴疯嚜宸辩殑鍏徃閲岄潰鏈夌洃鎺ф鏋讹紝閭d箞浠栦滑鍙互鑷繁瀹炵幇鑷繁鐨勪笂鎶ラ€昏緫銆傝€屼笂鎶ョ殑鏁版嵁鍒欏彧闇€瑕佹嬁鍒� MetricManager 瀹炰緥灏辫兘鎷垮埌銆� - -## 鎬荤粨 - -鏈川涓婃潵璇达紝鏁翠釜 metrics 鍙互鐪嬪仛鏄竴涓法澶ф棤姣旂殑 provider-conumer 妯″瀷銆� - -涓嶅悓鐨勬暟鎹細鍦ㄤ笉鍚岀殑鍦版柟鍜屼笉鍚屾椂闂寸偣涓婅閲囬泦銆傛湁浜涗汉鍦ㄨ杩欎簺婧愮爜鐨勬椂鍊欎細鏈夌偣鍥版儜锛屽氨鏄繖浜涙暟鎹粈涔堟椂闂寸偣浼氳閲囬泦鍛紵 - -瀹冧滑鍙細鍦ㄤ袱绫绘椂闂寸偣閲囬泦锛� -1銆佸疄鏃堕噰闆嗐€傚鎴戜笂闈妇渚嬬殑 metricsFilter 锛屼竴娆¤皟鐢ㄨ繃鏉ワ紝瀹冪殑鏁版嵁灏辫閲囬泦浜嗭紱 -2銆佸彟澶栦竴涓垯鏄鍚� Prometheus 銆傛瘡娆� Prometheus 瑙﹀彂浜� collect 鏂规硶锛岄偅涔堝畠灏变細鎶婃瘡绉嶏紙濡� Meter, Gauge 锛夐噷闈㈢殑鏁版嵁鏀堕泦杩囨潵锛岀劧鍚庝笂鎶ワ紝鍙互绉颁负鏄畾鏃堕噰闆嗭紱 - -杩欎簺鍏蜂綋鐨勫疄鐜帮紝鎴戝氨涓嶄竴涓€璁ㄨ浜嗭紝澶у鏈夊叴瓒e彲浠ュ幓鐪嬬湅婧愮爜銆傝繖浜涙暟鎹紝涔熸槸鎴戜滑 dubbo-go 鍚庨潰瑕侀檰缁疄鐜扮殑涓滆タ锛屾杩庡ぇ瀹舵寔缁叧娉紝鎴栬€呮潵璐$尞浠g爜銆� \ No newline at end of file diff --git a/doc/md/service-governance/dubbo-go-sentinel.md b/doc/md/service-governance/dubbo-go-sentinel.md deleted file mode 100644 index ef9358c460ec002bb2c4dae597fd1d8abda1094f..0000000000000000000000000000000000000000 --- a/doc/md/service-governance/dubbo-go-sentinel.md +++ /dev/null @@ -1,155 +0,0 @@ -# [鍦╠ubbo-go涓娇鐢╯entinel](https://dubbogo.github.io/dubbo-go-website/zh-cn/blog/dubbo-go-sentinel.html) - -鏃惰嚦浠婃棩锛孉pache/dubbo-go锛堜互涓嬬畝绉� dubbo-go 锛夐」鐩湪鍔熻兘涓婂凡缁忛€愭瀵归綈java鐗堟湰锛岀ǔ瀹氭€т篃鍦ㄤ笉鍚岀殑鐢熶骇鐜寰楀埌浜嗛獙璇併€傜ぞ鍖轰究寮€濮嬪啀鏈嶅姟娌荤悊銆佺洃鎺х瓑鏂瑰悜鍙戝姏銆傞殢鐫€ 1.2鍜�1.3 鐗堟湰鍙戝竷锛� dubbo-go 鏂板浜嗗ぇ閲忔绫绘柊feature銆� - -浠婂ぉ鎴戜滑鑱婁竴鑱婇檺娴佺浉鍏宠瘽棰橈紝姝ゅ墠dubbo-go宸茬粡鏀寔浜哰tps limit](https://github.com/apache/dubbo-go/pull/237)銆乕execute limit](https://github.com/apache/dubbo-go/pull/246) 銆乕hystrix](https://github.com/apache/dubbo-go/pull/133) 鐨勫唴缃甪ilter锛岀敤鎴峰彧瑕佺畝鍗曢厤缃氨鑳介┈涓婄敤涓娿€備絾鎴戜滑鐭ラ亾锛屽湪 java 鐨� dubbo 鐢熸€佷腑锛屾湁涓€椤归檺娴佸伐鍏疯骞挎硾浣跨敤锛岄偅灏辨槸sentinel銆俿entinel鍥犱负寮哄ぇ鐨勫姩鎬佽鍒掗厤缃€佷紭绉€鐨刣ashboard浠ュ強瀵筪ubbo鐨勮壇濂介€傞厤锛屾垚涓轰紬澶氫娇鐢╠ubbo鐨勪紒涓氶€夌敤闄愭祦宸ュ叿鐨勪笉浜屼箣閫夈€� - -灏卞湪鍓嶄簺鏃ュ瓙锛岀ぞ鍖洪潪甯搁珮鍏村緱鐭� Sentinel Golang 棣栦釜鐗堟湰 0.1.0 姝e紡鍙戝竷锛岃繖浣垮緱 dubbo-go涔熷彲浠ヤ娇鐢� sentinel 浣滀负宸ュ叿杩涜涓€浜涙湇鍔℃不鐞嗐€佺洃鎺х殑宸ヤ綔浜嗐€傞殢鐫€sentinel golang鐨勫仴澹紝鎴戜滑鐩镐俊鐢ㄦ埛椹笂鍙互鍍弒entinel绠$悊java dubbo鏈嶅姟閭f牱绠$悊dubbo-go鐨勬湇鍔′簡銆� - -瀹屾垚sentinel golang鐨刣ubbo-adapter鍏跺疄闈炲父绠€鍗曪紝杩欏緱鐩婁簬dubbo-go鏃╁氨瀹屾垚浜唂ilter閾剧殑鏋勯€狅紝鐢ㄦ埛鍙互鑷畾涔塮ilter锛屽苟涓旂伒娲荤殑瀹夋帓鍏舵墽琛岄『搴忋€傚湪1.3鍙戝竷鍚庯紝澧炲姞浜唂ilter涓殑context浼犻€掞紝鏋勫缓sentinel/adapter/dubbo鏇翠负鏂逛究銆� - -鎴戜滑浠ュ叾涓殑provider filter閫傞厤涓轰緥: - - - -姝� filter 瀹炵幇浜� dubbo-go鐨刦ilter鎺ュ彛锛屽彧瑕佺敤鎴峰湪鏈嶅姟鍚姩鏃跺皢姝ilter鍔犺浇鍒癲ubbo-go涓紝鍗冲彲浣跨敤姝ilter銆�  -sentinel瀹炵幇鍘熺悊涓庡叾浠栭檺娴併€佺啍鏂簱澶у悓灏忓紓锛屽簳灞傛槸鐢ㄧ殑婊戝姩绐楀彛绠楁硶銆備笌hystrix绛夋鏋剁浉姣斾笉鍚岀偣鏄璁$悊蹇碉紝Sentinel 鐨勮璁$悊蹇垫槸璁╂偍鑷敱閫夋嫨鎺у埗鐨勮搴︼紝骞惰繘琛岀伒娲荤粍鍚堬紝浠庤€岃揪鍒版兂瑕佺殑鏁堟灉銆� - -涓嬮潰鎴戞暣鐞嗕簡瀹屾暣鐨勪娇鐢ㄦ祦绋嬶細(娉ㄦ剰锛歞ubbo-go鐗堟湰璇蜂娇鐢�1.3.0-rc3鍙婂叾浠ヤ笂鐗堟湰) - -鍦╠ubbo-go涓娇鐢╯entinel涓昏鍒嗕负浠ヤ笅鍑犳锛� - -1.鍒濆鍖杝entinel - -2.灏唖entinel娉ㄥ叆dubbo-go鐨刦ilter - -3.鍒濆鍖杁ubbo-go - -4.閰嶇疆瑙勫垝 - -## 鍒濆鍖杝entinel - -绀轰緥浠g爜锛� - -```go -import ( - sentinel "github.com/alibaba/sentinel-golang/api" -) - -func initSentinel() { - err := sentinel.InitWithLogDir(confPath, logDir) - if err != nil { - // 鍒濆鍖� Sentinel 澶辫触 - } -} -``` - -## 灏唖entinel娉ㄥ叆dubbo-go鐨刦ilter - -浣犲彲浠ラ€氳繃import鍖呯殑褰㈠紡鎵ц锛屾墽琛屽叾涓殑init()鏉ユ敞鍏ilter - -```go -import ( - _ "github.com/alibaba/sentinel-golang/adapter/dubbo" -) -``` - -涔熷彲浠ユ墜鍔ㄦ墽琛岋紝缁欎綘鐨刦ilter鍙栦笂鑷繁鎯宠鐨勫悕瀛� - -```go -import ( - "github.com/apache/dubbo-go/common/extension" - sd "github.com/alibaba/sentinel-golang/adapter/dubbo" -) - -func main(){ - extension.SetFilter("myConsumerFilter",sd.GetConsumerFilter()) - extension.SetFilter("myProviderFilter",sd.GetConsumerFilter()) -} -``` - -瀹屾垚浠ヤ笂姝ラ锛屼綘灏卞彲浠ュ湪闇€瑕佺殑dubbo鎺ュ彛閰嶇疆閲屽啓鍏entinel鐨刦ilterName,鏋勫缓璧锋帴鍙g殑filter閾炬潯銆傛瘮濡備互涓嬩互consumer.yml閰嶇疆鏂囦欢涓轰緥 - -```yml -references: - "UserProvider": - registry: "hangzhouzk" - protocol : "dubbo" - interface : "com.ikurento.user.UserProvider" - cluster: "failover" - filter: "myConsumerFilter" - methods : - - name: "GetUser" - retries: 3 -``` - -## 鍒濆鍖杁ubbo-go - -鍒拌繖涓€姝ワ紝浣犲彧闇€瑕佹甯稿惎鍔╠ubbo-go绋嬪簭灏卞畬鎴愪簡鏈嶅姟鍚姩銆傜敤浠ヤ笅浠g爜鍋氫竴涓緝涓哄畬鏁翠妇渚� - -```go -import ( - hessian "github.com/apache/dubbo-go-hessian2" - sd "github.com/alibaba/sentinel-golang/adapter/dubbo" -) - -import ( - "github.com/apache/dubbo-go/common/logger" - _ "github.com/apache/dubbo-go/common/proxy/proxy_factory" - "github.com/apache/dubbo-go/config" - _ "github.com/apache/dubbo-go/filter/impl" - _ "github.com/apache/dubbo-go/protocol/dubbo" - _ "github.com/apache/dubbo-go/registry/protocol" - - _ "github.com/apache/dubbo-go/cluster/cluster_impl" - _ "github.com/apache/dubbo-go/cluster/loadbalance" - _ "github.com/apache/dubbo-go/registry/zookeeper" - "github.com/apache/dubbo-go/common/extension" -) - -func main() { - - hessian.RegisterPOJO(&User{}) - extension.SetFilter("myConsumerFilter",sd.GetConsumerFilter()) - extension.SetFilter("myProviderFilter",sd.GetConsumerFilter()) - config.Load() - - // init finish, do your work - test() -} -``` - -## 瑙勫垝閰嶇疆 - -sentinel浠ュ己澶х殑瑙勫垝閰嶇疆鍚稿紩浜嗗緢澶氫娇鐢ㄨ€咃紝鍏舵彁渚涘姩鎬佹暟鎹簮鎺ュ彛杩涜鎵╁睍锛岀敤鎴峰彲浠ラ€氳繃鍔ㄦ€佹枃浠舵垨 etcd 绛夐厤缃腑蹇冩潵鍔ㄦ€佸湴閰嶇疆瑙勫垯銆備絾鐩墠sentinel-golang浣滀负鐮磋泲鐗堟湰锛屽姩鎬侀厤缃繕鍦ㄥ紑鍙戜腑 - -### 鍔ㄦ€佹暟鎹簮 - -锛堝紑鍙戜腑锛塖entinel 鎻愪緵鍔ㄦ€佹暟鎹簮鎺ュ彛杩涜鎵╁睍锛岀敤鎴峰彲浠ラ€氳繃鍔ㄦ€佹枃浠舵垨 etcd 绛夐厤缃腑蹇冩潵鍔ㄦ€佸湴閰嶇疆瑙勫垯銆� - -### 纭紪鐮佹柟寮� - -Sentinel 涔熸敮鎸佸師濮嬬殑纭紪鐮佹柟寮忓姞杞借鍒欙紝鍙互閫氳繃鍚勪釜妯″潡鐨� `LoadRules(rules)` 鏂规硶鍔犺浇瑙勫垯銆備互涓嬫槸纭紪鐮佹柟寮忓鏌愪釜method鍦╟onsumer绔殑QPS娴佹帶锛� - -```go -_, err := flow.LoadRules([]*flow.FlowRule{ - { - ID: 666, - Resource: "dubbo:consumer:com.ikurento.user.UserProvider:myGroup:1.0.0:hello()", - MetricType: flow.QPS, - Count: 10, - ControlBehavior: flow.Reject, - }, -}) -if err != nil { - // 鍔犺浇瑙勫垯澶辫触锛岃繘琛岀浉鍏冲鐞� -} -``` - -# 鎬荤粨 - -鏇村姞鍏蜂綋鐨勫疄鐜帮紝鎴戝氨涓嶈缁嗚杩帮紝澶у鍙互鍘荤湅婧愮爜杩涗竴姝ヤ簡瑙c€� - -鏈€鍚庯紝娆㈣繋澶у鎸佺画鍏虫敞锛屾垨鑰呰础鐚唬鐮侊紝鏈熷緟dubbo-go鍦�2020骞村湪浜戝師鐢熼鍩熺户缁獊鐮淬€� - -dubbo-go浠撳簱鍦板潃锛歔https://github.com/apache/dubbo-go](https://github.com/apache/dubbo-go) \ No newline at end of file diff --git a/doc/md/service-governance/dubbo-go-tps-limit-design-and-implement.md b/doc/md/service-governance/dubbo-go-tps-limit-design-and-implement.md deleted file mode 100644 index 962ec98fdf331e9e5ba42482af91b186f770fe30..0000000000000000000000000000000000000000 --- a/doc/md/service-governance/dubbo-go-tps-limit-design-and-implement.md +++ /dev/null @@ -1,163 +0,0 @@ -# [dubbogo涓殑TPS Limit璁捐涓庡疄鐜癩(https://developer.aliyun.com/article/726804) - -# 鍓嶈█ - -[Apache Dubbo](http://dubbo.apache.org)鏄敱闃块噷寮€婧愮殑涓€涓猂PC妗嗘灦锛岄櫎浜嗗熀鏈殑RPC鍔熻兘浠ュ锛岃繕鎻愪緵浜嗕竴鏁村鐨勬湇鍔℃不鐞嗙浉鍏冲姛鑳姐€傜洰鍓嶅畠宸茬粡鏄疉pache鍩洪噾浼氫笅鐨勯《绾ч」鐩€� - -鑰孾dubbogo](https://github.com/apache/dubbo-go)鍒欐槸dubbo鐨刧o璇█瀹炵幇銆� - -鏈€杩戝湪`dubbogo`鐨刞todo list`涓婂彂鐜帮紝瀹冭繕娌℃湁瀹炵幇`TPS Limit`鐨勬ā鍧楋紝浜庢槸灏辨娊绌哄疄鐜颁簡杩欎釜閮ㄥ垎銆� - -`TPS limit`瀹為檯涓婂氨鏄檺娴侊紝姣斿璇撮檺鍒朵竴鍒嗛挓鍐呮煇涓帴鍙e彧鑳借闂�200娆★紝瓒呰繃杩欎釜娆℃暟锛屽垯浼氳鎷掔粷鏈嶅姟銆傚湪`Dubbo`鐨凧ava鐗堟湰涓婏紝鍙湁涓€涓疄鐜帮紝灏辨槸`DefaultTPSLimiter`銆� - -`DefaultTPSLimiter`鏄湪鏈嶅姟绾у埆涓婅繘琛岄檺娴併€傝櫧鐒禶dubbo`鐨勫畼鏂规枃妗i噷闈㈠0绉板彲浠ュ湪`method`绾у埆涓婅繘琛岄檺娴侊紝浣嗘槸鎴戠湅浜嗕竴涓嬪畠鐨勬簮鐮侊紝瀹為檯涓婅繖涓槸鍋氫笉鍒扮殑銆傚綋鐒讹紝濡傛灉鑷繁閫氳繃瀹炵幇`Filter`鎺ュ彛鏉ュ疄鐜癭method`绾у埆鐨勯檺娴侊紝閭d箞鑷劧鏄彲浠ョ殑鈥斺€旇繖鏍锋毚闇蹭簡`dubbo`Java鐗堟湰瀹炵幇鐨勫彟澶栦竴涓棶棰橈紝灏辨槸`dubbo`鐨刞TpsLimitFilter`瀹炵幇锛屾槸涓嶅厑璁告帴鍏ヨ嚜宸盽TpsLimiter`鐨勫疄鐜扮殑銆傝繖浠庡畠鐨勬簮鐮佷篃鍙互鐪嬪嚭鏉ワ細 - - - -瀹冪洿鎺ュ啓姝讳簡`TpsLimiter`鐨勫疄鐜般€� - -杩欎釜瀹炵幇鐨勭洰鍓嶅彧鏄悎骞跺埌浜哷develop`涓婏紝绛変笅娆″彂甯冩寮忕増鏈殑鏃跺€欐墠浼氬彂甯冨嚭鏉ャ€� - -Github: [https://github.com/apache/dubbo-go/pull/237](https://github.com/apache/dubbo-go/pull/237) - -# 璁捐鎬濊矾 - -浜庢槸鎴戝ぇ姒傚弬鑰冧簡涓€涓媊dubbo`宸叉湁鐨勫疄鐜帮紝鍋氫簡涓€鐐规敼杩涖€� - -`dubbo`閲岄潰鐨勬牳蹇冩娊璞℃槸`TpsLimiter`鎺ュ彛銆俙TpsLimitFilter`鍙槸绠€鍗曡皟鐢ㄤ簡涓€涓嬭繖涓帴鍙g殑鏂规硶鑰屽凡锛� - - - -杩欎釜鎶借薄鏄緢妫掔殑銆備絾鏄繕娆犵己浜嗕竴浜涙娊璞°€� - -瀹為檯涓婏紝涓€涓猅PS Limit灏辫瑙e喅涓変釜闂锛� - -1. 瀵逛粈涔堜笢瑗胯繘琛宍limit`銆傛瘮濡傝锛屽鏈嶅姟杩涜闄愭祦锛屾垨鑰呭鏌愪釜鏂规硶杩涜闄愭祦锛屾垨鑰呭IP杩涜闄愭祦锛屾垨鑰呭鐢ㄦ埛杩涜闄愭祦锛� -2. 濡備綍鍒ゆ柇宸茬粡`over limitation`銆傝繖鏄粠绠楁硶灞傞潰涓婅€冭檻锛屽嵆鐢ㄤ粈涔堢畻娉曟潵鍒ゆ柇鏌愪釜璋冪敤杩涙潵鐨勬椂鍊欙紝宸茬粡瓒呰繃閰嶇疆鐨勪笂闄愪簡锛� -3. 琚嫆缁濅箣鍚庤濡備綍澶勭悊銆傚鏋滀竴涓姹傝鏂畾涓哄凡缁廯over limititation`浜嗭紝閭d箞璇ユ€庝箞澶勭悊锛� - -鎵€浠ュ湪`TpsLimiter`鎺ュ彛鐨勫熀纭€涓婏紝鎴戝啀鍔犱簡涓や釜鎶借薄锛� - - - -TpsLimiter - - - -TpsLimitStrategy - - - -RejectedExecutionHandler - -`TpsLimiter`瀵瑰簲鍒癑ava鐨刞TpsLimiter`锛屼袱鑰呮槸宸笉澶氥€傚湪鎴戠殑璁炬兂閲岄潰锛屽畠鏃㈡槸椤剁骇鍏ュ彛锛岃繕闇€瑕佹壙鎷呰В鍐崇涓€涓棶棰樼殑鑱岃矗銆� - -鑰宍TpsLimitStrategy`鍒欐槸绗簩涓棶棰樼殑鎶借薄鐨勬帴鍙e畾涔夈€傚畠浠h〃鐨勬槸绾补鐨勭畻娉曘€傝鎺ュ彛瀹屽叏娌℃湁鍙傛暟锛屽疄闄呬笂锛屾墍鏈夌殑瀹炵幇闇€瑕佺淮鎶よ嚜韬殑鐘舵€佲€斺€斿浜庡ぇ閮ㄥ垎瀹炵幇鑰岃█锛屽畠澶ф鍙渶瑕佽幏鍙栦竴涓嬬郴缁熸椂闂存埑锛屾墍浠ヤ笉闇€瑕佸弬鏁般€� - -鏈€鍚庝竴涓帴鍙RejectedExecutionHandler`浠h〃鐨勬槸鎷掔粷绛栫暐銆傚湪`TpsLimitFilter`閲岄潰锛屽鏋滃畠璋冪敤`TpsLimiter`鐨勫疄鐜帮紝鍙戠幇璇ヨ姹傝鎷掔粷锛岄偅涔堝氨浼氫娇鐢ㄨ鎺ュ彛鐨勫疄鐜版潵鑾峰彇涓€涓繑鍥炲€硷紝杩斿洖缁欏鎴风銆� - -# 瀹炵幇 - -鍏跺疄瀹炵幇娌″お澶氬ソ璋堢殑銆備笉杩囨湁涓€浜涘井濡欑殑鍦版柟锛屾垜铏界劧鍦ㄤ唬鐮侀噷闈㈡敞閲婁簡锛屼絾鏄垜瑙夊緱鍦ㄨ繖閲屽啀澶氳涓€鐐逛篃鏄彲浠ョ殑銆� - -棣栧厛鎻愬強鐨勫氨鏄嫆缁濈瓥鐣RejectedExecutionHandler`锛屾垜灏辨槸鎻愪緵浜嗕竴绉嶅疄鐜帮紝灏辨槸闅忎究log浜嗕竴涓嬶紝浠€涔堥兘娌″仛銆傚洜涓鸿繖涓笢瑗挎槸寮轰笟鍔$浉鍏崇殑锛屾垜涔熶笉鑳芥彁渚涙洿鍔犲鐨勯€氱敤鐨勫疄鐜般€� - -## 鏂规硶涓庢湇鍔″弻閲嶆敮鎸佺殑TpsLimiter - -`TpsLimiter`鎴戝彧鏈変竴涓疄鐜帮紝閭e氨鏄痐MethodServiceTpsLimiterImpl`銆傚畠灏辨槸鏍规嵁閰嶇疆锛屽鏋滄柟娉曠骇鍒厤缃簡鍙傛暟锛岄偅涔堜細鍦ㄦ柟娉曠骇鍒笂杩涜闄愭祦銆傚惁鍒欙紝濡傛灉鍦ㄦ湇鍔$骇鍒紙ServiceKey锛変笂鏈夐厤缃紝閭d箞浼氬湪鏈嶅姟绾у埆杩涜闄愭祦銆� - -涓句釜鏈€澶嶆潅鐨勪緥瀛愶細鏈嶅姟A闄愬埗100锛屾湁鍥涗釜鏂规硶锛屾柟娉昅1閰嶇疆闄愬埗40锛屾柟娉昅2鍜屾柟娉昅3鏃犻厤缃紝鏂规硶M4閰嶇疆闄愬埗-1锛氶偅涔堟柟娉昅1浼氬崟鐙檺娴�40锛汳2鍜孧3鍚堝苟缁熻锛岃闄愬埗鍦�100锛涙柟娉昅4鍒欎細琚拷鐣ャ€� - -鐢ㄦ埛鍙互閰嶇疆鍏蜂綋鐨勭畻娉曘€傛瘮濡傝浣跨敤鎴戞帴涓嬫潵璇寸殑锛屾垜宸茬粡瀹炵幇鐨勪笁绉嶅疄鐜般€� - -## FixedWindow鍜孴hreadSafeFixedWindow - -`FixedWindow`鐩存帴瀵瑰簲鍒癑ava鐨刞DefaultTpsLimiter`銆傚畠閲囩敤鐨勬槸`fixed-window`绠楁硶锛氭瘮濡傝閰嶇疆浜嗕竴鍒嗛挓鍐呭彧鑳借皟鐢�100娆°€傚亣濡備粠00:00寮€濮嬭鏃讹紝閭d箞00:00-01:00鍐咃紝鍙兘璋冪敤100娆°€傚彧鏈夊埌杈�01:00锛屾墠浼氬紑鍚柊鐨勭獥鍙�01:00-02:00銆傚鍥撅細 - - - -Fixed-Window鍥剧ず - - - -Fixed-Window瀹炵幇 - -杩欓噷鏈変竴涓緢鏈夋剰鎬濈殑鍦版柟銆傚氨鏄繖涓疄鐜帮紝鏄竴涓嚑涔庣嚎绋嬪畨鍏ㄤ絾鏄叾瀹炲苟涓嶆槸绾跨▼瀹夊叏鐨勫疄鐜般€� - -鍦ㄦ墍鏈夌殑瀹炵幇閲岄潰锛屽畠鏄渶涓虹畝鍗曪紝鑰屼笖鎬ц兘鏈€楂樼殑銆傛垜鍦ㄨ 閲忎簡涓€鐣箣鍚庯紝杩樻槸娌℃妸瀹冨仛鎴愮嚎绋嬪畨鍏ㄧ殑銆備簨瀹炰笂锛孞ava鐗堟湰鐨勪篃涓嶆槸绾跨▼瀹夊叏鐨勩€� - -瀹冨彧浼氬湪澶氫釜绾跨▼閫氳繃绗�67琛岀殑妫€娴嬩箣鍚庯紝鎵嶄細鍑虹幇骞跺彂闂锛岃繖涓椂鍊欏氨涓嶆槸绾跨▼瀹夊叏浜嗐€備絾鏄湪鏈€鍚庣殑`return`璇彞涓紝閭d竴鏁翠釜鏄嚎绋嬪畨鍏ㄧ殑銆傚畠鍥犱负涓嶆柇璁℃暟寰€涓婂姞锛屾墍浠ュ涓嚎绋嬪悓鏃惰窇鍒拌繖閲岋紝鍏跺疄涓嶄細鏈変粈涔堥棶棰樸€� - -鐜板湪鎴戣鎻湶涓€涓渶涓哄璇$殑鐗规€т簡锛�**骞跺彂瓒婇珮锛岄偅涔堣繖涓猔raise condition`灏辫秺涓ラ噸锛屼篃灏辨槸璇磋秺涓嶅畨鍏ㄣ€�** - -浣嗘槸浠庡疄闄呬娇鐢ㄨ搴﹁€岃█锛屾湁鏋佺TPS鐨勮繕鏄瘮杈冨皯鐨勩€傚浜庨偅浜汿PS鍙湁鍑犵櫨姣忕鐨勶紝鏄病浠€涔堥棶棰樼殑銆� - -**涓轰簡淇濇寔鍜宒ubbo涓€鑷寸殑鐗规€э紝鎴戞妸瀹冧綔涓洪粯璁ょ殑瀹炵幇銆�** - -姝ゅ锛屾垜杩樹负瀹冩悶浜嗕竴涓嚎绋嬪畨鍏ㄧ増鏈紝涔熷氨鏄痐ThreadSafeFixedWindowTpsLimitStrategyImpl`锛屽彧鏄畝鍗曠殑鐢╜sync`灏佽浜嗕竴涓嬶紝鍙互鐪嬪仛鏄竴涓猔Decorator`妯″紡鐨勫簲鐢ㄣ€� - -濡傛灉寮烘眰绾跨▼瀹夊叏锛屽彲浠ヨ€冭檻浣跨敤杩欎釜銆� - -## SlidingWindow - -杩欐槸鎴戞瘮杈冨枩娆㈢殑瀹炵幇銆傚畠璺熺綉缁滃崗璁噷闈㈢殑婊戝姩绐楀彛绠楁硶鍦ㄧ悊蹇典笂鏄瘮杈冩帴杩戠殑銆� - - - -Sliding-Window - -鍏蜂綋鏉ヨ锛屽亣濡傛垜璁剧疆鐨勫悓鏍锋槸涓€鍒嗛挓1000娆★紝瀹冪粺璁$殑姘歌繙鏄粠褰撳墠鏃堕棿鐐瑰線鍓嶅洖婧竴鍒嗛挓鍐咃紝宸茬粡琚皟鐢ㄤ簡澶氬皯娆°€傚鏋滆繖涓€鍒嗛挓鍐咃紝璋冪敤娆℃暟娌¤秴杩�1000锛岃姹備細琚鐞嗭紝濡傛灉宸茬粡瓒呰繃锛岄偅涔堝氨浼氭嫆缁濄€� - -鎴戝啀鏉ユ弿杩颁竴涓嬶紝`SldingWindow`鍜宍FixedWindow`涓ょ绠楁硶鐨勫尯鍒€傝繖涓よ€呭緢澶氫汉浼氭悶娣枫€傚亣濡傚綋鍓嶇殑鏃堕棿鎴虫槸00:00锛屼袱涓畻娉曞悓鏃舵敹鍒颁簡绗竴涓姹傦紝寮€鍚涓€涓椂闂寸獥鍙c€� - -閭d箞`FixedWindow`灏辨槸00:00-01:00鏄涓€涓獥鍙o紝鎺ヤ笅鏉ヤ緷娆℃槸01:00-02:00, 02:00-03:00, ...銆傚綋鐒跺亣濡傝01:00涔嬪悗鐨勪笁鍗佺鍐呴兘娌℃湁璇锋眰锛屽湪01:31鍙堟潵浜嗕竴涓姹傦紝閭d箞鏃堕棿绐楀彛灏辨槸01:31-02:31銆� - -鑰宍SildingWindow`鍒欐病鏈夎繖绉嶆蹇点€傚亣濡傚湪01:30鏀跺埌涓€涓姹傦紝閭d箞`SlidingWindow`缁熻鐨勫垯鏄�00:30-01:30鍐呮湁娌℃湁杈惧埌1000娆°€�**瀹冩案杩滆绠楃殑閮芥槸鎺ユ敹鍒拌姹傜殑閭d竴鍒诲線鍓嶅洖婧竴鍒嗛挓鐨勮姹傛暟閲忋€�** - -濡傛灉杩樻槸瑙夊緱鏈夊洶闅撅紝閭d箞绠€鍗曟潵璇村氨鏄痐FixedWindow`寰€鍚庣湅涓€鍒嗛挓锛宍SlidingWindow`鍥炴函涓€鍒嗛挓銆� - -> 杩欎釜璇存硶骞朵笉涓ヨ皑锛屽彧鏄负浜嗘柟渚跨悊瑙c€� - -鍦ㄧ湡姝e啓杩欎釜瀹炵幇鐨勬椂鍊欙紝鎴戠◢寰敼浜嗕竴鐐圭偣锛� - - - -鎴戠敤浜嗕竴涓槦鍒楁潵淇濆瓨姣忔璁块棶鐨勬椂闂存埑銆備竴鑸殑鍐欐硶锛岄兘鏄姹傝繘鏉ワ紝鍏堟妸宸茬粡涓嶅湪绐楀彛鏃堕棿鍐呯殑鏃堕棿鎴冲垹鎺夛紝鐒跺悗缁熻鍓╀笅鐨勬暟閲忥紝涔熷氨鏄悗闈㈢殑`slow path`鐨勯偅涓€鍫嗛€昏緫銆� - -浣嗘槸鎴戞敼浜嗙殑涓€鐐规槸锛屾垜杩涙潵鐩存帴缁熻闃熷垪閲岄潰鐨勬暟閲忊€斺€斾篃灏辨槸璇锋眰鏁伴噺锛屽鏋滈兘灏忎簬涓婇檺锛岄偅涔堟垜鍙互鐩存帴杩斿洖`true`銆傚嵆`quick path`銆� - -杩欑鏀硅繘鐨勬牳蹇冨氨鏄細鎴戝彧鏈夊湪妫€娴嬪埌褰撳墠闃熷垪閲岄潰鏈夎秴杩囦笂闄愭暟閲忕殑璇锋眰鏁伴噺鏃跺€欙紝鎵嶄細灏濊瘯鍒犻櫎宸茬粡涓嶅湪绐楀彛鍐呯殑鏃堕棿鎴炽€� - -杩欏叾瀹炲氨鏄紝鏄瘡涓姹傝繃鏉ワ紝鎴戦兘娓呯悊涓€涓嬮槦鍒楀憿锛熻繕鏄彧鏈夐槦鍒楀厓绱犺秴鍑烘暟閲忎簡锛屾垜鎵嶆竻鐞嗗憿锛熸垜閫夋嫨鐨勬槸鍚庤€呫€� - -鎴戣涓鸿繖鏄竴绉嶆敼杩涒€︹€﹀綋鐒朵粠鏈川涓婃潵璇达紝鏁翠綋寮€閿€鏄病鏈夊噺灏戠殑鈥斺€斿洜涓篳golang`璇█閲岄潰`List`鐨勫疄鐜帮紝涓€娆″鍒犻櫎鍑犱釜锛屽拰姣忔鍒犻櫎涓€涓紝澶氬垹鍑犳锛屽苟娌℃湁澶氬ぇ鐨勫尯鍒€� - -### 绠楁硶鎬荤粨 - -鏃犺鏄痐FixedWindow`绠楁硶杩樻槸`SlidingWindow`绠楁硶閮芥湁涓€涓浐鏈夌殑缂洪櫡锛屽氨鏄繖涓椂闂寸獥鍙i毦鎺у埗銆� - -鎴戜滑璁炬兂涓€涓嬶紝鍋囧璇存垜浠妸鏃堕棿绐楀彛璁剧疆涓轰竴鍒嗛挓锛屽厑璁�1000娆¤皟鐢ㄣ€傜劧鑰岋紝鍦ㄥ墠鍗佺鐨勬椂鍊欏氨璋冪敤浜�1000娆°€傚湪鍚庨潰鐨勪簲鍗佺锛屾湇鍔″櫒铏界劧灏嗘墍鏈夌殑璇锋眰閮藉鐞嗗畬浜嗭紝鐒舵槸鍥犱负绐楀彛杩樻病鍒版柊绐楀彛锛屾墍浠ヨ繖涓椂闂存杩囨潵鐨勮姹傦紝鍏ㄩ儴浼氳鎷掔粷銆� - - - -瑙e喅鐨勬柟妗堝氨鏄皟灏忔椂闂寸獥鍙o紝姣斿璋冩暣鍒颁竴绉掋€備絾鏄椂闂寸獥鍙g殑缂╁皬锛屼細瀵艰嚧`FixedWindow`绠楁硶鐨刞raise condition`鎯呭喌鍔犲墽銆俙SlidingWindow`涔熶細鍙楀奖鍝嶏紝浣嗘槸褰卞搷瑕佸皬寰堝銆� - -## 閭d簺娌℃湁瀹炵幇鐨� - -### 鍩轰簬鐗瑰畾涓氬姟瀵硅薄鐨勯檺娴� - -涓句緥鏉ヨ锛屾煇浜涚壒娈婁笟鍔$敤鐨勯拡瀵圭敤鎴稩D杩涜闄愭祦鍜岄拡瀵笽P杩涜闄愭祦锛屾垜灏辨病鏈夊湪`dubbogo`閲岄潰瀹炵幇銆傛湁闇€瑕佺殑鍙互閫氳繃瀹炵幇`TpsLimiter`鎺ュ彛鏉ュ畬鎴愩€� - -### 鍏ㄥ眬TPS limit - -杩欑瘒鏂囩珷涔嬪墠璁ㄨ鐨勯兘鏄崟鏈洪檺娴併€傚鏋滃叏灞€闄愭祦锛屾瘮濡傝閽堝鏌愪釜瀹㈡埛锛屽畠璐拱鐨勬湇鍔℃槸姣忓垎閽熻皟鐢�100娆★紝閭d箞灏遍渶瑕佸叏灞€闄愭祦鈥斺€旇櫧鐒惰繖绉峜ase閮戒笉浼氱敤`Filter`鏂规锛岃€屾槸鍙﹀鍋氫竴涓猔API`鎺ュ叆鎺у埗銆� - -姣斿璇达紝寰堝父鐢ㄧ殑浣跨敤Redis杩涜闄愭祦鐨勩€傞拡瀵规煇涓鎴凤紝涓€鍒嗛挓鍙兘璁块棶100娆★紝閭f垜灏辩敤瀹㈡埛ID鍋歬ey锛寁alue璁剧疆鎴怢ist锛屾瘡娆¤皟鐢ㄨ繃鏉ワ紝闅忎究濉炰竴涓€艰繘鍘伙紝璁剧疆杩囨湡鏃堕棿涓€鍒嗛挓銆傞偅涔堟瘡娆$粺璁″彧闇€瑕佺粺璁″綋鍓峩ey鐨勫瓨娲荤殑鍊肩殑鏁伴噺灏卞彲浠ヤ簡銆� - -杩欑鎴戜篃娌″疄鐜帮紝鍥犱负濂藉儚娌′粈涔堥渶姹傘€傚浗鍐呰璁篢PS limit閮芥槸璁ㄨ鍗曟満TPS limit姣旇緝澶氥€� - -杩欎釜鍚屾牱鍙互閫氳繃瀹炵幇`TpsLimiter`鎺ュ彛鏉ュ疄鐜般€� - -### Leaky Bucket绠楁硶 - -杩欎釜鏈潵鍙互鏄痐TpsLimitStrategy`鐨勪竴绉嶅疄鐜扮殑銆傚悗鏉ユ垜瑙夊緱锛屽畠鍏跺疄骞舵病鏈夌壒鍒ぇ鐨勪紭鍔库€斺€旇櫧鐒跺彿绉板彲浠ュ仛鍒板潎鍖€锛屼絾鏄叾瀹炲苟鍋氫笉鍒扮湡姝g殑鍧囧寑銆傞€氳繃璋冩暣`SlidingWindow`鐨勭獥鍙eぇ灏忥紝鏄彲浠ユ帴杩戝畠瀹gО鐨勫潎鍖€娑堣垂鐨勬晥鏋滅殑銆傛瘮濡傝璋冩暣鍒颁竴绉掞紝閭e叾瀹炲氨宸茬粡寰堝潎鍖€浜嗐€傝€岃繖骞朵笉浼氬甫鏉ュ灏戦澶栫殑寮€閿€銆� \ No newline at end of file diff --git a/doc/md/service-governance/implementation-of-rest-protocol-in-dubbo-go.md b/doc/md/service-governance/implementation-of-rest-protocol-in-dubbo-go.md deleted file mode 100644 index 3358d0fa7fde497ab24ed3d12ea9b11673a8bc96..0000000000000000000000000000000000000000 --- a/doc/md/service-governance/implementation-of-rest-protocol-in-dubbo-go.md +++ /dev/null @@ -1,244 +0,0 @@ -# [dubbo-go 涓� REST 鍗忚瀹炵幇](https://mp.weixin.qq.com/s/9ngGYnkdcu14GkaPBjOBLg) - -鍦ㄧぞ鍖哄皬浼欎即浠殑鍔姏涓嬶紝Apache/dubbo-go 鍦� v1.4.0 涓敮鎸� REST 鍗忚浜嗐€� - -## 浠€涔堟槸 REST 鍗忚 - -REST 鏄� 聽**RE**presentational聽**S**tate聽**T**ransfer锛堣〃杩版€х姸鎬佽浆绉伙級鐨勭畝鍐欙紝鏄竴绉嶈蒋浠舵灦鏋勯鏍笺€傝櫧鐒� REST 鏋舵瀯椋庢牸涓嶆槸涓€瀹氳鍩轰簬 HTTP 鍗忚杩涜浼犺緭锛屼絾鏄洜涓� HTTP 鍗忚鐨勯€氱敤鎬у拰鏄撶敤鎬э紝鐜板湪瓒婃潵瓒婂鐨� web 鏈嶅姟閲囩敤鍩轰簬 HTTP 鍗忚瀹炵幇 RESTful 鏋舵瀯銆� - -鍦� dubbo-go 涓殑 REST 鍗忚鎸囩殑鏄竴绉嶅熀浜� HTTP 鍗忚鐨勮繙绋嬭皟鐢ㄦ柟寮忋€傜畝鍗曠殑鏉ヨ锛孯EST 鍗忚灏辨槸鎶� dubbo 鏈嶅姟鍙戝竷鎴� RESTful 椋庢牸鐨� HTTP 鎺ュ彛骞朵笖鑳藉鑳藉儚璋冪敤 dubbo 鎺ュ彛涓€鏍风殑鏂瑰紡璋冪敤 HTTP 鎺ュ彛銆� - -## 涓轰粈涔堣鏀寔 REST 鍗忚 - -鍦ㄦ病鏈� REST 鍗忚涔嬪墠锛屽皬浼欎即浠槸鍚︿竴鐩村湪鑻︽伡杩欐牱鍑犱釜闂锛� - -1. 浼犵粺鐨� web 鏈嶅姟涓嶈兘鐩存帴璋冪敤鎴戜滑鍙戝竷鐨� dubbo 鏈嶅姟 -1. 鍓嶇涓嶈兘鐩存帴璋冪敤 dubbo 鏈嶅姟 -1. dubbo 鏈嶅姟涓嶈兘鍙戝竷 Open API - -涓婅堪闂锛屽氨鏄� REST 鍗忚瑙e喅鐨勬牳蹇冮棶棰樸€傜幇鍦ㄦ垜浠緢澶氬簲鐢ㄥ満鏅兘鏄渶瑕佷笌寮傛瀯鐨勭郴缁熻繘琛屼氦浜掞紝鑰� REST 閲囩敤鐨� HTTP 閫氫俊鍗忚闈炲父閫傚悎鐢ㄦ潵鎵撻€氬紓鏋勭郴缁燂紝濡傚浘锛� - - - -## REST 鍗忚娌¢偅涔堢畝鍗� - -REST 鍗忚鏍稿績瑕佽В鍐充竴涓棶棰橈細**Go 鏂规硶鍒� HTTP 鎺ュ彛鐨勫弻鍚戞槧灏�**銆傛櫘閫� HTTP 璋冪敤 dubbo-go 鏈嶅姟锛岃€冭檻鐨勬槸 HTTP 鍒� **Go** 鏂规硶鐨勬槧灏勶紱鑰� dubbo-go 鏈嶅姟璋冪敤 HTTP 鏈嶅姟锛屽垯鏄� **Go** 鏂规硶鍒� HTTP 鎺ュ彛鐨勬槧灏勩€� - -涓嬮潰鏄垜浠涓� **Go** 鏂规硶瑕佸仛鏄犲皠鐨� HTTP 璇锋眰鍗忚鍐呭锛� - -```http -POST /path/{pathParam}?queryParam=1 HTTP/1.1 -Accept: application/json -Content-Type: application/json -Host: http://localhost:8080 - -{"id":1111} -``` - -鍦ㄦ湇鍔℃彁渚涙柟锛屽綋涓婇潰杩欑璇锋眰鍙戦€佸埌鏈嶅姟鍣ㄦ椂锛屾垜浠鎶婂畠璺敱鍒颁笅闈㈣繖涓� **Go** 鏂规硶涓紝鍦ㄦ湇鍔℃秷璐规柟锛屾垜浠篃鍙互閫氳繃璋冪敤涓嬮潰鐨� **Go** 鏂规硶鎶婃柟娉曞弬鏁拌浆鍖栦负涓婇潰鐨� HTTP 璇锋眰锛� - -```go -type Provider struct { - - // 璇ユ柟娉曞簲璇ュ搴斾笂闈㈢殑http璇锋眰 - GetResult func(pathParam string, queryParam string, body interface{}, host string) (*Result, error) - -} -``` - -鍦ㄦ秷璐规柟璋冪敤 聽`GetResult` 鏃讹紝浼犲叆鍚勪釜鍙傛暟鐨勫€硷細 - -- 鍙橀噺 聽pathParam 鐨勫唴瀹瑰簲璇ユ槸瀛楃涓� "pathParam"锛� -- 鍙橀噺 聽queryParam 鐨勫唴瀹瑰簲璇ユ槸瀛楃涓� 聽"1" 锛� -- 鍙橀噺 聽body 搴旇鏄湁浠ュ瓧绗︿覆 "id" 涓� key 锛�1111 涓� value 鐨勪竴涓� map锛� -- 褰撶劧 聽host 鍙橀噺鐨勫唴瀹瑰簲璇ユ槸瀛楃涓� "[http://localhost:8080](http://localhost:8080)" 銆� - -鍦ㄦ湇鍔$鎵ц `GetResult` 鏂规硶鏃讹紝寰楀埌鐨勫弬鏁颁細涓庢秷璐规柟璋冪敤鏃朵紶鍏ョ殑鍊肩浉鍚屻€� - -鎬荤粨涓嬫潵锛屾垜浠寤虹珛浠ヤ笅杩欎簺鏄犲皠鍏崇郴 - -1. 璺緞鏄犲皠 -1. Header 澶勭悊锛堝浐瀹� Header 鍜� Header 鍊间篃鏄弬鏁颁袱绉嶆儏鍐碉級 -1. POST or GET or ...锛圚TTP聽 鏂规硶鏄犲皠锛� -1. 鍙傛暟鏄犲皠 - -瑕佸畬鎴愯繖绉嶆槧灏勶紝鎴戜滑棣栧厛瑕佽В鍐崇殑鏄紝濡備綍鐭ラ亾杩欑鏄犲皠鍏崇郴锛� - -绛旀鍙湁涓€涓紝閫氳繃鐢ㄦ埛閰嶇疆銆傝€岀敤鎴烽厤缃墍闈复鐨勫洶闅炬槸锛屽鏉備笖鐞愮銆傦紙瑙e喅鎬濊矾鏄彁渚涘ぇ閲忛粯璁ら厤缃噺杞婚厤缃殑璐熸媴锛岃嚜瀹氫箟閰嶇疆鏂瑰紡鍏佽鐢ㄦ埛浣跨敤鑷繁鐔熸倝鐨勯厤缃舰寮忥級 - -鍙﹀涓€涓毦鐐瑰湪浜庯紝浣跨敤浣曠 web 妗嗘灦鐨勯棶棰樸€傛湁浜涘叕鍙稿唴閮ㄤ娇鐢ㄧ殑鏄嚜鐮旂殑 web 妗嗘灦锛屼粬浠湁鎴愮啛鐨勬妧鏈熀纭€鍜岃繍缁磋兘鍔涖€備簬鏄氨浼氳€冭檻璇达紝鑳戒笉鑳借 dubbo-go 鍦ㄦ敮鎸� REST 鍗忚鐨勬椂鍊欙紝鑳藉璁╀粬浠皢 REST 鍗忚浣跨敤鐨� web 妗嗘灦鏇挎崲鎴愪粬浠墍鏈熸湜鐨勫憿锛� - -## 濡備綍寤虹珛 HTTP 鎺ュ彛涓庢柟娉曠殑鏄犲皠鍏崇郴 - -涓嬮潰鎴戜妇涓€涓� HTTP 鎺ュ彛涓庢柟娉曟槧灏勭殑鍏蜂綋渚嬪瓙锛� - -**Go** 缁撴瀯浣撳畾涔夊涓嬶細 - -```go -type UserProvider struct { - - GetUser func(id string, name string, age int) (*User, error) - -} -``` - -瑕佸彂甯冪殑 HTTP 鎺ュ彛褰㈠紡鏄細 -[http://127.0.0.1/UserProvider/GetUser/{id}?name=test&age=1](http://127.0.0.1/UserProvider/GetUser/%7Bid%7D?name=test&age=1) - -鏈嶅姟绔厤缃涓嬶細 - -```yaml -services: - "UserProvider": - //娉ㄥ唽涓績 - registry: "zookeeper" - //鍚敤REST鍗忚 - protocol : "rest" - //DUBBO鐨勬帴鍙e悕 - interface : "com.ikurento.user.UserProvider" - // 鏈嶅姟鎺ュ彛璺緞 - rest_path: "/UserProvider" - methods: - - name: "GetUser" - // 鏂规硶鎺ュ彛璺緞 - rest_path: "/GetUser/{id}" - // HTTP鏂规硶 - rest_method: "GET" - // HTTP鏌ヨ鍙傛暟 - rest_query_params: "1:name,2:age" - // HTTP璺緞鍙傛暟 - rest_path_params: "0:id" - // 鍙互鎻愪緵鐨勫唴瀹圭被鍨� - rest_produces: "application/json;application/xml" - // 鍙互鎺ュ彈鐨勫鎴风鍙傛暟绫诲瀷 - rest_consumes: "application/json;charset=utf-8,*/*" - // HTTP Body - rest_body: -1 -``` - -鍦ㄩ厤缃枃浠朵腑鎴戜滑瀹氫箟浜嗘柟娉曠殑璺緞锛孒TTP 鏂规硶绛夋帴鍙e弬鏁帮紝杩欓噷闇€瑕佹敞鎰忕殑鏄矾寰勫弬鏁板拰鏌ヨ鍙傛暟鐨勯厤缃柟寮忥紝0:name 鐨勬剰鎬濇槸鏌ヨ鍙傛暟 name 瀵瑰簲 `GetUser` 鏂规硶鐨勭涓€涓弬鏁帮紝杩樻湁 rest_body 閰嶇疆鐨勬暟瀛椾篃鏄搴旇繖鏂规硶鐨勫弬鏁帮紝杩欓噷娌℃湁 body 鍙傛暟鎵€鏈夊氨閰嶇疆浜� `-1`銆� - -## REST 鍗忚鐨勮皟鐢ㄨ繃绋� - - -涓婂浘灞曠ず浜嗙敤鎴峰湪 Consumer 绔皟鐢� 聽`GetUser` 鏂规硶鍒� Provdier 绔� 聽`GetUser`聽 鏂规硶琚墽琛岀殑鏁翠釜杩囩▼锛屽湪 聽`RestClient` 鍜� 聽`RestServer` 涓垎鍒�**瀹炵幇浜� 聽Go聽 鏂规硶鍙傛暟鍒� 聽HTTP聽 璇锋眰鐨勮浆鎹㈠拰 HTTP 璇锋眰鍒� 聽Go聽 鏂规硶鐨勮浆鎹紝杩欐槸鏈€涓烘牳蹇冨拰澶嶆潅鐨勯儴鍒嗐€�**鎹㈣█涔嬶紝鎴戜滑鍦ㄨ繖閲屽疄鐜颁簡鍓嶉潰鎻愬埌鐨� Go 鏂规硶鍜� HTTP 璇锋眰鐨勫弻鍚戞槧灏勩€� - -杩欓噷鎴戜滑鍙互娉ㄦ剰鍒� 聽`RestClient` 鍜� `RestServer` 鏄彲浠ョ敤鎴疯嚜琛屾墿灞曠殑锛屼笅闈㈡垜灏嗗叿浣撲粙缁嶄竴涓嬪湪 REST 鍗忚涓湁鍝簺鎵╁睍鐐硅璁°€� - -## REST 鍗忚鐨勬墿灞曠偣璁捐 - -鍩轰簬 dubbo-go 鑹ソ鐨� extension 鎵╁睍璁捐锛屾垜浠畾涔変簡澶氫釜鎵╁睍鐐癸紝鐢ㄦ埛鍙互鑷畾涔夊姛鑳藉疄鐜般€� - -### 鑷畾涔� HTTP 鏈嶅姟鍣� - -RestServer 鐨勬墿灞曟帴鍙o細 - -```go -type RestServer interface { - - // sever鍚姩鍑芥暟 - Start(url common.URL) - - // 鍙戝竷鎺ュ彛 - Deploy(restMethodConfig *rest_config.RestMethodConfig, routeFunc func(request RestServerRequest, response RestServerResponse)) - - // 鍒犻櫎鎺ュ彛 - UnDeploy(restMethodConfig *rest_config.RestMethodConfig) - - // server鍏抽棴 - Destroy() - -} -``` - -鍦� dubbo-go 鐨� v1.4.0 涓粯璁や娇鐢� go-restful 浣滀负 HTTP 鏈嶅姟鍣紝濡傛灉鐢ㄦ埛鎯崇敤鍏朵粬 HTTP 瀹瑰櫒鍙互瀹炵幇涓婇潰鐨勬帴鍙o紝骞跺湪閰嶇疆鏂囦欢涓厤缃娇鐢ㄨ嚜宸辫嚜瀹氫箟鐨勬湇鍔″櫒銆� - -杩欎釜鎺ュ彛涓紝鏈€鏍稿績鐨勬柟娉曟槸 Deploy锛屽湪 restMethodConfig 鏂规硶鍙傛暟涓湁鐢ㄦ埛閰嶇疆鐨勬帴鍙h矾寰勭瓑涓€绯诲垪鍙傛暟锛宺outeFunc 鏄� HTTP 鎺ュ彛闇€瑕佽璺敱鎵ц鐨勫嚱鏁般€備笉鍚岀殑 http 鏈嶅姟鍣ㄤ細鏈変笉鍚岀殑 request 鍜� response 锛屾墍浠ユ垜浠畾涔変簡 `RestServerRequest` 鎺ュ彛鍜� `RestServerResponse` 鎺ュ彛璁╃敤鎴疯繘琛岄€傞厤銆� - -### 鑷畾涔� HTTP 瀹㈡埛绔� - -RestClient 鐨勬墿灞曟帴鍙o細 - -```go -// RestOptions -type RestOptions struct { - RequestTimeout time.Duration - ConnectTimeout time.Duration -} - -// RestClientRequest -type RestClientRequest struct { - Header http.Header - Location string - Path string - Method string - PathParams map[string]string - QueryParams map[string]string - Body interface{} -} - -// RestClient user can implement this client interface to send request -type RestClient interface { - Do(request *RestClientRequest, res interface{}) error -} - -``` - -鏈€鍚庣殑璇锋眰鍒板鎴风鏃讹紝閮戒細琚皝瑁呬负 `RestRequest`锛岀敤鎴峰彲浠ラ潪甯哥畝鍗曞揩閫熺殑鎵╁睍鑷繁鐨� Client 绔€俙RestOptions` 涓湁涓€浜涘鎴风鐨勮秴鏃堕厤缃紝鍦ㄥ垱寤鸿嚜宸辩殑瀹㈡埛绔椂闇€瑕佹牴鎹繖浜涢厤缃垵濮嬪寲瀹㈡埛绔€� - -### 鑷畾涔� REST 閰嶇疆褰㈠紡 - -鍓嶉潰鎻愬埌锛孯EST 鍗忚涓€涓緢楹荤儲鐨勫湴鏂瑰湪浜庯紝閰嶇疆寰堢箒鐞愬緢鐞愮銆侴o 涓嶅悓浜� Java锛屽彲浠ラ€氳繃娉ㄨВ鐨勫舰寮忔潵绠€鍖栭厤缃€� - -鎵€浠ユ垜浠€冭檻鍒扮敤鎴蜂笉鍚岀殑浣跨敤涔犳儻鍜屽叕鍙哥殑閰嶇疆椋庢牸锛屾彁渚涗簡杩欎釜鎵╁睍鐐广€� - -ConfigReader 鐨勬墿灞曟帴鍙o細 - -```go -type ConfigReader interface { - - // Consumer閰嶇疆璇诲彇 - ReadConsumerConfig(reader *bytes.Buffer) error - - // Provider閰嶇疆璇诲彇 - ReadProviderConfig(reader *bytes.Buffer) error - -} -``` - -`ReadConsumerConfig` 鍜� `ReadProviderConfig` 鏂规硶鐨勫弬鏁版槸閰嶇疆鏂囦欢鐨勬枃浠舵祦锛屽湪瀹炵幇鏂规硶涓彲浠ュ啀娆¤В鏋愶紝涔熷彲浠ヤ娇鐢ㄤ簩娆$紪璇戞垨鑰呯‖缂栫爜鏂瑰紡绛夊叾浠栨柟寮忚鍙栭厤缃€傝繖鏄竴涓€氱敤鐨勯厤缃鍙栨帴鍙o紝浠ュ悗鍙互鐢ㄦ潵鎵╁睍 REST 閰嶇疆涔嬪鐨勫叾浠栭厤缃紝鎵€浠ラ渶瑕佸湪鏂规硶涓皟鐢ㄦ柟娉曡缃厤缃紝濡備笅锛� - -```go -// 璁剧疆Rest鐨勬秷璐硅€呴厤缃� -config.SetRestConsumerServiceConfigMap(restConsumerServiceConfigMap) - -// 璁剧疆Rest鐨勬彁渚涜€呴厤缃� -config.SetRestProviderServiceConfigMap(restProviderServiceConfigMap) -``` - -## 濡備綍娣诲姞 HTTP 杩囨护鍣� - -鍥犱负涓嶅悓 HTTP 鏈嶅姟鍣ㄧ殑杩囨护鍣紝鎷︽埅鍣ㄦ垨鑰呮槸 middleware 娣诲姞鏂瑰紡閮戒笉鍚岋紝鎵€浠ユ垜浠緢闅惧畾涔変竴涓帴鍙f弧瓒虫墍鏈夋湇鍔″櫒銆傚洜姝ゆ垜浠崟鐙负 go-restful 瀹氫箟浜嗕竴涓坊鍔� filter 鐨勬柟娉曪紝杩欓噷鎴戜滑闇€瑕佹敞鎰忕殑涓€鐐规槸蹇呴』鍦� REST 鎺ュ彛鍙戝竷鍓嶆坊鍔� filter銆� - -```go -server_impl.AddGoRestfulServerFilter(func(request *restful.Request, response *restful.Response, chain *restful.FilterChain) { - // 閴存潈绛夊姛鑳� - chain.ProcessFilter(request, response) -}) - -// 鍚姩dubbo鏈嶅姟锛屽彂甯價est绛夋帴鍙� -config.Load() -``` - -## 灞曟湜 - -浠ヤ笂鏄叧浜� REST 鍗忚鐨勪竴浜涗粙缁嶏紝鍏蜂綋鐨勫疄鐜版垜灏变笉璇︾粏璁蹭簡锛屽ぇ瀹跺彲浠ュ幓鍙傞槄婧愮爜銆� - -濡傛灉鎯崇湅鍏蜂綋鐨� Example锛岃鍙傝€冿細 -[https://github.com/dubbogo/dubbo-samples/tree/master/golang/general/rest](https://github.com/dubbogo/dubbo-samples/tree/master/golang/general/rest) - -REST 鏈潵闇€瑕佹敮鎸� HTTPS 鍗忚鍜屽熀浜� open tracing 鏍囧噯 api 鐨勯摼璺拷韪€俁EST 鐨勯厤缃俊鎭湭鏉ヤ篃涓嶆槸 REST 鍗忚鐙湁鐨勶紝杩欎簺閰嶇疆淇℃伅鏈潵鍙互浣滀负姣忎釜 dubbo 鎺ュ彛鐨勫厓鏁版嵁锛屽瓨鍌ㄥ埌鍏冩暟鎹腑蹇冿紝涓虹綉鍏虫彁渚� HTTP 鍗忚涓� dubbo 鍗忚涔嬮棿鐨勬槧灏勫叧绯汇€� - -- 浣滆€呬俊鎭細 - - 钂嬭秴锛実ithub id Patrick0308锛屽湪 鏉窞璐濆畨浜戠鎶€鏈夐檺鍏徃 浠昏亴鏈嶅姟寮€鍙戝伐绋嬪笀銆� diff --git a/doc/md/service-governance/zero-cost-access-to-mosn-for-dubbo-go.md b/doc/md/service-governance/zero-cost-access-to-mosn-for-dubbo-go.md deleted file mode 100644 index 2b80a311622436d766b56aa0f4f6e42abe6f5f23..0000000000000000000000000000000000000000 --- a/doc/md/service-governance/zero-cost-access-to-mosn-for-dubbo-go.md +++ /dev/null @@ -1,170 +0,0 @@ -# [Dubbo/Dubbo-go 搴旂敤闆舵垚鏈帴鍏� MOSN](https://mosn.io/docs/dev/dubbo-integrate/) - -## Dubbo 浠嬬粛 - -Dubbo 鏈€鍒濇槸 **Java 寮€鍙戠殑涓€濂� RPC 妗嗘灦**锛岄殢鐫€绀惧尯鐨勫彂灞曘€傚綋鍓� dubbo 涔熸笎娓愭垚涓轰竴濂楄法璇█鐨勮В鍐虫柟妗堛€�**闄や簡 Java 浠ュ锛岃繕鏈夌浉搴旂殑 Go 瀹炵幇**銆傛湁瑙勫緥鐨勭増鏈彂甯冭妭濂忥紝绀惧尯杈冧负娲昏穬銆� - -## Dubbo 鏈嶅姟 mesh 鍖� - -鎺ュ叆 service mesh 鐨勫簲鐢紝鍏舵湇鍔″彂鐜板簲璇ョ敱鐩稿簲鐨� mesh 妯″潡鎺ョ銆備竴鑸敱鎺у埗闈㈠皢鐩稿簲鐨勬湇鍔″彂鐜伴厤缃繘琛岃闃呭拰涓嬪彂銆備絾杩欓噷瀛樺湪鍑犱釜闂锛� - -濡傛灉鍏徃鏄涓€娆℃帴鍏� service mesh锛屼笉甯屾湜涓€娆″紩鍏ュお澶氭ā鍧楋紝杩欐牱浼氬鍔犳暣浣撶殑杩愮淮璐熸媴銆傚鏋滃彲浠ユ笎杩涘湴杩佺Щ鍒� service mesh 鏋舵瀯锛屼緥濡傚厛鎺ュ叆鏁版嵁闈紝鍐嶆帴鍏ユ帶鍒堕潰銆傞偅涔堝氨鍙互闅忔椂浠ヨ緝浣庣殑鎴愭湰杩涜鍥炴粴銆備篃涓嶄細缁欒繍缁撮€犳垚澶ぇ鐨勫帇鍔涖€� - -姣忎釜鍏徃閮芥湁鑷繁鐨勫彂灞曡鍒掞紝骞朵笉鏄瘡涓叕鍙搁兘瀹屾暣鍦版嫢鎶变簡浜戝師鐢熴€傚ぇ閮ㄥ垎鍏徃鍙兘瀛樺湪閮ㄥ垎涓婁簯锛岄儴鍒嗘湭涓婁簯鐨勬儏鍐碉紝鍦ㄨ縼绉诲埌 service mesh 鏃讹紝涔熷瓨鍦ㄩ儴鍒嗗簲鐢ㄦ帴鍏ヤ簡 service mesh锛岃€屽彟涓€閮ㄥ垎鏈帴鍏ョ殑鎯呭喌銆傞渶瑕佽€冭檻璺ㄦ灦鏋勪簰閫氥€� - -鎴戜滑杩欓噷鎻愬嚭鐨勬柟妗堝笇鏈涜兘澶熻В鍐宠繖浜涢棶棰樸€� - -### 鏈嶅姟鍙戠幇鎺ュ叆 - -#### 閰嶇疆宸ヤ綔 - -鍦ㄩ厤缃枃浠朵腑锛屾垜浠厤缃簡涓や釜 listener锛� - -涓€涓槸 serverListener锛岃礋璐f嫤鎴閮ㄨ繘鍏ョ殑娴侀噺锛岃浆鍙戠粰鏈湴妯″潡锛岃繖涓柟鍚戠殑璇锋眰涓嶉渶瑕佸仛鐗规畩澶勭悊锛屽彧瑕佷娇鐢� xprotocol 杞彂缁欐湰鏈哄嵆鍙€� - -涓€涓槸 clientListener锛岃礋璐f嫤鎴湰鏈哄悜澶栧彂璧风殑璇锋眰锛屽洜涓哄閮ㄩ泦缇ゆ牴鎹湇鍔℃敞鍐屼腑蹇冧笅鍙戠殑 endpoint 鍒楄〃鍔ㄦ€佸彉鍖栵紝鎵€浠ヨ listener 瀵瑰簲鐨勪篃鏄竴涓� 鐗规畩鐨� router 鍚� 鈥渄ubbo鈥濄€傦紝杩欓噷鍔″繀娉ㄦ剰銆� - -```json - "listeners": [ - { - "name": "serverListener", - "address": "127.0.0.1:2046", - "bind_port": true, - "log_path": "stdout", - "filter_chains": [ - { - "tls_context": {}, - "filters": [ - { - "type": "proxy", - "config": { - "downstream_protocol": "X", - "upstream_protocol": "X", - "router_config_name": "server_router", - "extend_config": { - "sub_protocol": "dubbo" - } - } - } - ] - } - ] - }, - { - "name": "clientListener", - "address": "0.0.0.0:2045", - "bind_port": true, - "log_path": "stdout", - "filter_chains": [ - { - "tls_context": {}, - "filters": [ - { - "type": "proxy", - "config": { - "downstream_protocol": "X", - "upstream_protocol": "X", - "router_config_name": "dubbo", - "extend_config": { - "sub_protocol": "dubbo" - } - } - } - ] - } - ] - } - ] -``` - -#### 寮€鍙戝伐浣� - -绗竴姝ワ紝鍦� MOSN 閰嶇疆涓鍔� dubbo_registry 鎵╁睍閫夐」锛� - -```json -"extend": [ - { - "type": "dubbo_registry", - "config": { - "enable": true, - "server_port": 20080, - "api_port": 22222, - "log_path": "/tmp" - } - } -] -``` - -璇ラ厤缃笌 tracing銆乤dmin 绛変负骞崇骇閰嶇疆銆� - -绗簩姝ワ紝閽堝鎺ュ叆鐨勬湇鍔★紝闇€瑕佺畝鍗曚慨鏀� sdk 涓殑 pub銆乻ub 鐜妭浠g爜锛� - -pub 鏃讹紝濡傛灉褰撳墠鐜涓烘帴鍏� MOSN 鐜(鍙€氳繃閰嶇疆绯荤粺涓嬪彂鐨勫紑鍏虫潵鍒ゆ柇)锛屽垯璋冪敤 MOSN 鐨� pub 鎺ュ彛锛岃€岄潪鐩存帴鍘绘敞鍐屼腑蹇� pub銆� - -sub 鏃讹紝濡傛灉褰撳墠鐜涓烘帴鍏� MOSN 鐜锛屽垯璋冪敤 MOSN 鐨� sub 鎺ュ彛锛屼笉鍘绘敞鍐屼腑蹇� sub銆� - -绗笁姝ワ紝搴旂敤閫€鍑烘椂锛岄渶瑕佸皢鎵€鏈� pub銆乻ub 鐨勬湇鍔℃墽琛屽弽鍚戞搷浣滐紝鍗� unpub銆乽nsub銆� - -鍦ㄦ湰鏂囦腑浣跨敤 httpie 鏉ュ彂閫� http 璇锋眰銆備娇鐢� dubbo-go 涓殑鏍蜂緥绋嬪簭浣滀负鎴戜滑鐨勬湇鍔$殑 client 鍜� server銆� - -鎺ヤ笅鏉ユ垜浠娇鐢� httpie 鏉ユā鎷熷悇绉嶆儏鍐典笅鐨� pub銆乻ub 娴佺▼銆� - -鐩磋繛 client 涓庢甯哥殑 dubbo service 浜掗€� -渚嬪瓙璺緞 - -Service 鏄甯哥殑 dubbo service锛屾墍浠ヤ細鑷姩娉ㄥ唽鍒� zk 涓幓锛屼笉闇€瑕佹垜浠府瀹� pub锛岃繖閲屽彧瑕� sub 灏卞彲浠ヤ簡锛屾墍浠ユ墽琛屾祦绋嬩负锛� - -绗竴姝ワ紝淇敼 MOSN 閰嶇疆锛屽鍔� dubbo_registry 鐨� extend 鎵╁睍銆� - -绗簩姝ワ紝mosn start銆� - -绗笁姝ワ紝start server銆� - -绗洓姝ワ紝subscribe service銆� -```sh -http --json post localhost:22222/sub registry:='{"type":"zookeeper", "addr" : "127.0.0.1:2181"}' service:='{"interface" : "com.ikurento.user.UserProvider", "methods" :["GetUser"], "group" : "", "version" : ""}' --verbose -``` -绗簲姝ワ紝start client銆� - -鍦� client 涓纭湅鍒拌繑鍥炵粨鏋滅殑璇濓紝璇存槑璇锋眰鎴愬姛浜嗐€� - -鐩磋繛 client 涓庣洿杩� dubbo service 浜掗€� -渚嬪瓙璺緞 - -鐩磋繛鐨勬湇鍔′笉浼氫富鍔ㄥ鑷韩杩涜鍙戝竷锛岀洿杩炵殑 client 涓嶄細涓诲姩杩涜璁㈤槄銆傚洜姝ゆ渚嬪瓙涓紝pub 鍜� sub 閮芥槸鐢辨垜浠潵杈呭姪杩涜鐨勩€� - -绗竴姝ワ紝淇敼 MOSN 閰嶇疆锛屽鍔� dubbo_registry 鐨� extend 鎵╁睍銆� - -绗簩姝ワ紝mosn start - -绗笁姝ワ紝start server - -绗洓姝ワ紝subscribe service -```sh -http --json post localhost:22222/sub registry:='{"type":"zookeeper", "addr" : "127.0.0.1:2181"}' service:='{"interface" : "com.ikurento.user.UserProvider", "methods" :["GetUser"], "group" : "", "version" : ""}' --verbose -``` -绗簲姝ワ紝publish service - -http --json post localhost:22222/pub registry:='{"type":"zookeeper", "addr" : "127.0.0.1:2181"}' service:='{"interface" : "com.ikurento.user.UserProvider", "methods" :["GetUser"], "group" : "", "version" : ""}' --verbose -绗叚姝ワ紝start client - -姝ゆ椂搴旇鑳界湅鍒� client 渚х殑鍝嶅簲銆� - -姝e父鐨� client 涓庣洿杩� dubbo service 浜掗€� -渚嬪瓙璺緞 - -Client 鏄甯� client锛屽洜姝� client 浼氳嚜宸卞幓 subscribe銆傛垜浠彧瑕佹甯稿湴鎶婃湇鍔� pub 鍑哄幓鍗冲彲锛� - -绗竴姝ワ紝淇敼 MOSN 閰嶇疆锛屽鍔� dubbo_registry 鐨� extend 鎵╁睍銆� - -绗簩姝ワ紝mosn start - -绗笁姝ワ紝start server - -绗洓姝ワ紝publish service -```sh -http --json post localhost:22222/sub registry:='{"type":"zookeeper", "addr" : "127.0.0.1:2181"}' service:='{"interface" : "com.ikurento.user.UserProvider", "methods" :["GetUser"], "group" : "", "version" : ""}' --verbose -``` -绗簲姝ワ紝start client - -姝ゆ椂搴旇鑳界湅鍒� client 渚х殑鍝嶅簲銆� diff --git a/doc/pic/arch/dubbo-go-arch.png b/doc/pic/arch/dubbo-go-arch.png deleted file mode 100644 index 0a28cb6a3af6953d2ad10390ddff5b7d82166ecc..0000000000000000000000000000000000000000 Binary files a/doc/pic/arch/dubbo-go-arch.png and /dev/null differ diff --git a/doc/pic/arch/dubbo-go-design-implement-and-featrues-a.png b/doc/pic/arch/dubbo-go-design-implement-and-featrues-a.png deleted file mode 100644 index 0f77e7c7bdd2e7c48d190647e36f17b07c18221f..0000000000000000000000000000000000000000 Binary files a/doc/pic/arch/dubbo-go-design-implement-and-featrues-a.png and /dev/null differ diff --git a/doc/pic/arch/dubbo-go-design-implement-and-featrues-b.png b/doc/pic/arch/dubbo-go-design-implement-and-featrues-b.png deleted file mode 100644 index 3189a4802785962c2e2dab94d3ed3acacd10cff6..0000000000000000000000000000000000000000 Binary files a/doc/pic/arch/dubbo-go-design-implement-and-featrues-b.png and /dev/null differ diff --git a/doc/pic/arch/dubbo-go-design-implement-and-featrues-c.png b/doc/pic/arch/dubbo-go-design-implement-and-featrues-c.png deleted file mode 100644 index 2fc84afe62b322fdcb85efb4ddef94ea48d19e6a..0000000000000000000000000000000000000000 Binary files a/doc/pic/arch/dubbo-go-design-implement-and-featrues-c.png and /dev/null differ diff --git a/doc/pic/arch/dubbo-go-design-implement-and-featrues-d.png b/doc/pic/arch/dubbo-go-design-implement-and-featrues-d.png deleted file mode 100644 index fe5f233b6e238dbf5bc2fcfa89d336934d2bf064..0000000000000000000000000000000000000000 Binary files a/doc/pic/arch/dubbo-go-design-implement-and-featrues-d.png and /dev/null differ diff --git a/doc/pic/arch/dubbo-go-design-implement-and-featrues-e.png b/doc/pic/arch/dubbo-go-design-implement-and-featrues-e.png deleted file mode 100644 index 52298189dd0fe82728ed8d8f4525365d4b7b681d..0000000000000000000000000000000000000000 Binary files a/doc/pic/arch/dubbo-go-design-implement-and-featrues-e.png and /dev/null differ diff --git a/doc/pic/arch/dubbo-go-design-implement-and-featrues-f.png b/doc/pic/arch/dubbo-go-design-implement-and-featrues-f.png deleted file mode 100644 index 1368e1c0b718327a74f6028abea4dabaa22c5bcb..0000000000000000000000000000000000000000 Binary files a/doc/pic/arch/dubbo-go-design-implement-and-featrues-f.png and /dev/null differ diff --git a/doc/pic/arch/dubbo-go-design-implement-and-featrues-g.png b/doc/pic/arch/dubbo-go-design-implement-and-featrues-g.png deleted file mode 100644 index ffde3b56b074e50dd26e158f38d721c40ab5aed4..0000000000000000000000000000000000000000 Binary files a/doc/pic/arch/dubbo-go-design-implement-and-featrues-g.png and /dev/null differ diff --git a/doc/pic/arch/dubbo-go-design-implement-and-featrues-h.png b/doc/pic/arch/dubbo-go-design-implement-and-featrues-h.png deleted file mode 100644 index 6783926994624da6c67902edfad886a3518cef28..0000000000000000000000000000000000000000 Binary files a/doc/pic/arch/dubbo-go-design-implement-and-featrues-h.png and /dev/null differ diff --git a/doc/pic/arch/dubbo-go-design-implement-and-featrues-i.png b/doc/pic/arch/dubbo-go-design-implement-and-featrues-i.png deleted file mode 100644 index 0e2c25b19895593acc72b71f95036526d3969eca..0000000000000000000000000000000000000000 Binary files a/doc/pic/arch/dubbo-go-design-implement-and-featrues-i.png and /dev/null differ diff --git a/doc/pic/arch/dubbo-go-design-implement-and-featrues-j.png b/doc/pic/arch/dubbo-go-design-implement-and-featrues-j.png deleted file mode 100644 index 1ea510561d01d57398e045720d51ac378716dae1..0000000000000000000000000000000000000000 Binary files a/doc/pic/arch/dubbo-go-design-implement-and-featrues-j.png and /dev/null differ diff --git a/doc/pic/arch/dubbo-go-design-implement-and-featrues-k.png b/doc/pic/arch/dubbo-go-design-implement-and-featrues-k.png deleted file mode 100644 index f5ae884bfbed5e07f9a61056ff4f3b8f709b1b4a..0000000000000000000000000000000000000000 Binary files a/doc/pic/arch/dubbo-go-design-implement-and-featrues-k.png and /dev/null differ diff --git a/doc/pic/arch/dubbo-go-ext.png b/doc/pic/arch/dubbo-go-ext.png deleted file mode 100644 index b60ecdf47ef190f097fccaf2d74070f6712ea80d..0000000000000000000000000000000000000000 Binary files a/doc/pic/arch/dubbo-go-ext.png and /dev/null differ diff --git a/doc/pic/arch/dubbo-go-one-year-1.png b/doc/pic/arch/dubbo-go-one-year-1.png deleted file mode 100644 index 376dd21b1bcf8bcd9a006642b8fecec41b9fc587..0000000000000000000000000000000000000000 Binary files a/doc/pic/arch/dubbo-go-one-year-1.png and /dev/null differ diff --git a/doc/pic/arch/dubbo-go-one-year-2.png b/doc/pic/arch/dubbo-go-one-year-2.png deleted file mode 100644 index c184ef6263b17f498e039a6e62e3ea9e5a479547..0000000000000000000000000000000000000000 Binary files a/doc/pic/arch/dubbo-go-one-year-2.png and /dev/null differ diff --git a/doc/pic/arch/dubbo-go-one-year-3.png b/doc/pic/arch/dubbo-go-one-year-3.png deleted file mode 100644 index 752bfceac3226eb098057ca6f460b60c38591307..0000000000000000000000000000000000000000 Binary files a/doc/pic/arch/dubbo-go-one-year-3.png and /dev/null differ diff --git a/doc/pic/arch/dubbo-go-one-year-4.png b/doc/pic/arch/dubbo-go-one-year-4.png deleted file mode 100644 index 837884dea2e8cbb8102da0a6bf02507eb0097680..0000000000000000000000000000000000000000 Binary files a/doc/pic/arch/dubbo-go-one-year-4.png and /dev/null differ diff --git a/doc/pic/arch/dubbo-go-one-year-5.png b/doc/pic/arch/dubbo-go-one-year-5.png deleted file mode 100644 index 6fb3105411fb4272ae78f1ece4f3ba6e155fb810..0000000000000000000000000000000000000000 Binary files a/doc/pic/arch/dubbo-go-one-year-5.png and /dev/null differ diff --git a/doc/pic/arch/dubbo-go-review-and-future-0.jpg b/doc/pic/arch/dubbo-go-review-and-future-0.jpg deleted file mode 100644 index 5ec22f175354319c8df25e52f65260bfd8394fb5..0000000000000000000000000000000000000000 Binary files a/doc/pic/arch/dubbo-go-review-and-future-0.jpg and /dev/null differ diff --git a/doc/pic/arch/dubbo-go-review-and-future-a.jpg b/doc/pic/arch/dubbo-go-review-and-future-a.jpg deleted file mode 100644 index dc8f1dc5f4b011d6d4a1b90263532d1f222b3278..0000000000000000000000000000000000000000 Binary files a/doc/pic/arch/dubbo-go-review-and-future-a.jpg and /dev/null differ diff --git a/doc/pic/arch/dubbo-go-review-and-future-b.jpg b/doc/pic/arch/dubbo-go-review-and-future-b.jpg deleted file mode 100644 index a8234572e3cd043a5f7a022bb5b714c8d637d9d3..0000000000000000000000000000000000000000 Binary files a/doc/pic/arch/dubbo-go-review-and-future-b.jpg and /dev/null differ diff --git a/doc/pic/arch/dubbo-go-review-and-future-c.jpg b/doc/pic/arch/dubbo-go-review-and-future-c.jpg deleted file mode 100644 index 652bd00dfdb10188bc47115477152baaa7bbb95e..0000000000000000000000000000000000000000 Binary files a/doc/pic/arch/dubbo-go-review-and-future-c.jpg and /dev/null differ diff --git a/doc/pic/arch/dubbo-go-review-and-future-d.jpg b/doc/pic/arch/dubbo-go-review-and-future-d.jpg deleted file mode 100644 index 5371cbbb76a0143eb463eb8d038e454c9767ace9..0000000000000000000000000000000000000000 Binary files a/doc/pic/arch/dubbo-go-review-and-future-d.jpg and /dev/null differ diff --git a/doc/pic/arch/dubbo-go-review-and-future-e.jpg b/doc/pic/arch/dubbo-go-review-and-future-e.jpg deleted file mode 100644 index ad7a3f4c29b35a441d1de5a3d76a5dfcb0c9aec9..0000000000000000000000000000000000000000 Binary files a/doc/pic/arch/dubbo-go-review-and-future-e.jpg and /dev/null differ diff --git a/doc/pic/arch/dubbo-go-review-and-future-f.jpg b/doc/pic/arch/dubbo-go-review-and-future-f.jpg deleted file mode 100644 index 13812d7eac01f5255fc99ab01f1eca4934d894f8..0000000000000000000000000000000000000000 Binary files a/doc/pic/arch/dubbo-go-review-and-future-f.jpg and /dev/null differ diff --git a/doc/pic/arch/dubbo-go-review-and-future-g.jpg b/doc/pic/arch/dubbo-go-review-and-future-g.jpg deleted file mode 100644 index 1a174ae11da2adb3d41439e0161310681c049c61..0000000000000000000000000000000000000000 Binary files a/doc/pic/arch/dubbo-go-review-and-future-g.jpg and /dev/null differ diff --git a/doc/pic/arch/dubbo-go-review-and-future-h.jpg b/doc/pic/arch/dubbo-go-review-and-future-h.jpg deleted file mode 100644 index fc398af847858a3c46c20763fadbc3d0e92859c3..0000000000000000000000000000000000000000 Binary files a/doc/pic/arch/dubbo-go-review-and-future-h.jpg and /dev/null differ diff --git a/doc/pic/arch/dubbo-go-review-and-future-i.jpg b/doc/pic/arch/dubbo-go-review-and-future-i.jpg deleted file mode 100644 index 42558f45f033552e6ed44e27265e27ac94fe1e8b..0000000000000000000000000000000000000000 Binary files a/doc/pic/arch/dubbo-go-review-and-future-i.jpg and /dev/null differ diff --git a/doc/pic/arch/dubbo-go-review-and-future-j.jpg b/doc/pic/arch/dubbo-go-review-and-future-j.jpg deleted file mode 100644 index 8eb3e7fd5baa2380993c10ea5fe19bb56fe0ef36..0000000000000000000000000000000000000000 Binary files a/doc/pic/arch/dubbo-go-review-and-future-j.jpg and /dev/null differ diff --git a/doc/pic/arch/dubbo-go-review-and-future-k.jpg b/doc/pic/arch/dubbo-go-review-and-future-k.jpg deleted file mode 100644 index 3af59c4f446a683fb4f60f90de6552fd2b73182d..0000000000000000000000000000000000000000 Binary files a/doc/pic/arch/dubbo-go-review-and-future-k.jpg and /dev/null differ diff --git a/doc/pic/arch/dubbo-go-review-and-future-l.jpg b/doc/pic/arch/dubbo-go-review-and-future-l.jpg deleted file mode 100644 index 7e10f682d09df3a9ad43dcec5a9e65648d9f93f0..0000000000000000000000000000000000000000 Binary files a/doc/pic/arch/dubbo-go-review-and-future-l.jpg and /dev/null differ diff --git a/doc/pic/arch/dubbo-go-review-and-future-m.jpg b/doc/pic/arch/dubbo-go-review-and-future-m.jpg deleted file mode 100644 index 17d78da72cf769df66e02dda2080b3da82fb3b20..0000000000000000000000000000000000000000 Binary files a/doc/pic/arch/dubbo-go-review-and-future-m.jpg and /dev/null differ diff --git a/doc/pic/arch/dubbo-go-review-and-future-n.jpg b/doc/pic/arch/dubbo-go-review-and-future-n.jpg deleted file mode 100644 index b64a975bae7e9281646718fe86ec93f5b2e631b6..0000000000000000000000000000000000000000 Binary files a/doc/pic/arch/dubbo-go-review-and-future-n.jpg and /dev/null differ diff --git a/doc/pic/arch/dubbo-go-review-and-future-o.png b/doc/pic/arch/dubbo-go-review-and-future-o.png deleted file mode 100644 index f97468ca767b65265dd868e1faec88612dd41087..0000000000000000000000000000000000000000 Binary files a/doc/pic/arch/dubbo-go-review-and-future-o.png and /dev/null differ diff --git a/doc/pic/arch/dubbo-go-review-and-future-p.png b/doc/pic/arch/dubbo-go-review-and-future-p.png deleted file mode 100644 index 3f9e924e77ca6e84e9cb10334d59e81954059cfc..0000000000000000000000000000000000000000 Binary files a/doc/pic/arch/dubbo-go-review-and-future-p.png and /dev/null differ diff --git a/doc/pic/arch/dubbo-go-review-and-future-q.jpg b/doc/pic/arch/dubbo-go-review-and-future-q.jpg deleted file mode 100644 index 48bb4a943caa06df3c6c6dad8201c4419f35e45e..0000000000000000000000000000000000000000 Binary files a/doc/pic/arch/dubbo-go-review-and-future-q.jpg and /dev/null differ diff --git a/doc/pic/arch/dubbo-go-review-and-future-r.jpg b/doc/pic/arch/dubbo-go-review-and-future-r.jpg deleted file mode 100644 index 72290335becc150b03aab4d52b800885c1307dd2..0000000000000000000000000000000000000000 Binary files a/doc/pic/arch/dubbo-go-review-and-future-r.jpg and /dev/null differ diff --git a/doc/pic/arch/dubbo-go-review-and-future-s.jpg b/doc/pic/arch/dubbo-go-review-and-future-s.jpg deleted file mode 100644 index 33b4d7472b8079029a2384e56c8af7e95aec7e04..0000000000000000000000000000000000000000 Binary files a/doc/pic/arch/dubbo-go-review-and-future-s.jpg and /dev/null differ diff --git a/doc/pic/arch/dubbo-go-review-and-future-t.png b/doc/pic/arch/dubbo-go-review-and-future-t.png deleted file mode 100644 index 7aee88fb00ae89597bbc0f0704e42af2ddad44d5..0000000000000000000000000000000000000000 Binary files a/doc/pic/arch/dubbo-go-review-and-future-t.png and /dev/null differ diff --git a/doc/pic/arch/dubbo-go-review-and-future-u.png b/doc/pic/arch/dubbo-go-review-and-future-u.png deleted file mode 100644 index 99649afbec228c22188d19bd93a6c5d7f1ce69af..0000000000000000000000000000000000000000 Binary files a/doc/pic/arch/dubbo-go-review-and-future-u.png and /dev/null differ diff --git a/doc/pic/arch/dubbo-go-review-and-future-v.jpg b/doc/pic/arch/dubbo-go-review-and-future-v.jpg deleted file mode 100644 index 909738ebae532d4ff02f5332128b1b250d47c870..0000000000000000000000000000000000000000 Binary files a/doc/pic/arch/dubbo-go-review-and-future-v.jpg and /dev/null differ diff --git a/doc/pic/arch/dubbo-go-review-and-future-w.jpg b/doc/pic/arch/dubbo-go-review-and-future-w.jpg deleted file mode 100644 index ec8606bc02173a3518e86a0d45154a3128f723fa..0000000000000000000000000000000000000000 Binary files a/doc/pic/arch/dubbo-go-review-and-future-w.jpg and /dev/null differ diff --git a/doc/pic/arch/dubbo-go-review-and-future-x.png b/doc/pic/arch/dubbo-go-review-and-future-x.png deleted file mode 100644 index 328e046643ebbde623696b4acb1a66ddb850bfab..0000000000000000000000000000000000000000 Binary files a/doc/pic/arch/dubbo-go-review-and-future-x.png and /dev/null differ diff --git a/doc/pic/arch/dubbo-go-review-and-future-y.jpg b/doc/pic/arch/dubbo-go-review-and-future-y.jpg deleted file mode 100644 index c8f1801e0778cbd21480a241071cfbc0d24ab44e..0000000000000000000000000000000000000000 Binary files a/doc/pic/arch/dubbo-go-review-and-future-y.jpg and /dev/null differ diff --git a/doc/pic/arch/dubbo-go-review-and-future-z.jpg b/doc/pic/arch/dubbo-go-review-and-future-z.jpg deleted file mode 100644 index 219784c9bc72b42b02b0b6adada688dd1f021b04..0000000000000000000000000000000000000000 Binary files a/doc/pic/arch/dubbo-go-review-and-future-z.jpg and /dev/null differ diff --git a/doc/pic/config-center/how-to-implement-remote-configuration-management-in-dubbo-go-a.jpg b/doc/pic/config-center/how-to-implement-remote-configuration-management-in-dubbo-go-a.jpg deleted file mode 100644 index 3fc7600e7618d1d026c5bc41d78556bca801c6fa..0000000000000000000000000000000000000000 Binary files a/doc/pic/config-center/how-to-implement-remote-configuration-management-in-dubbo-go-a.jpg and /dev/null differ diff --git a/doc/pic/config-center/how-to-implement-remote-configuration-management-in-dubbo-go-b.png b/doc/pic/config-center/how-to-implement-remote-configuration-management-in-dubbo-go-b.png deleted file mode 100644 index 08b9f62d733a5f4dcae4c38cc9422b60cfa26b24..0000000000000000000000000000000000000000 Binary files a/doc/pic/config-center/how-to-implement-remote-configuration-management-in-dubbo-go-b.png and /dev/null differ diff --git a/doc/pic/config-center/how-to-implement-remote-configuration-management-in-dubbo-go-c.png b/doc/pic/config-center/how-to-implement-remote-configuration-management-in-dubbo-go-c.png deleted file mode 100644 index 046f9be15864c3938e90c77728d5e8743c57465a..0000000000000000000000000000000000000000 Binary files a/doc/pic/config-center/how-to-implement-remote-configuration-management-in-dubbo-go-c.png and /dev/null differ diff --git a/doc/pic/config-center/how-to-implement-remote-configuration-management-in-dubbo-go-d.png b/doc/pic/config-center/how-to-implement-remote-configuration-management-in-dubbo-go-d.png deleted file mode 100644 index 0c0ad73c0836b53675eb7c36f0149aea8839be13..0000000000000000000000000000000000000000 Binary files a/doc/pic/config-center/how-to-implement-remote-configuration-management-in-dubbo-go-d.png and /dev/null differ diff --git a/doc/pic/config-center/how-to-implement-remote-configuration-management-in-dubbo-go-e.png b/doc/pic/config-center/how-to-implement-remote-configuration-management-in-dubbo-go-e.png deleted file mode 100644 index 4c035fd8e5bc31ccb08b41483795e926d06e1fce..0000000000000000000000000000000000000000 Binary files a/doc/pic/config-center/how-to-implement-remote-configuration-management-in-dubbo-go-e.png and /dev/null differ diff --git a/doc/pic/config-center/how-to-implement-remote-configuration-management-in-dubbo-go-f.png b/doc/pic/config-center/how-to-implement-remote-configuration-management-in-dubbo-go-f.png deleted file mode 100644 index cebcd376722e7e630a0b8969ed8c4b2722b01000..0000000000000000000000000000000000000000 Binary files a/doc/pic/config-center/how-to-implement-remote-configuration-management-in-dubbo-go-f.png and /dev/null differ diff --git a/doc/pic/config-center/how-to-implement-remote-configuration-management-in-dubbo-go-g.png b/doc/pic/config-center/how-to-implement-remote-configuration-management-in-dubbo-go-g.png deleted file mode 100644 index fdee33ba12ce4d10a4a866b5dc872e6d114c29d5..0000000000000000000000000000000000000000 Binary files a/doc/pic/config-center/how-to-implement-remote-configuration-management-in-dubbo-go-g.png and /dev/null differ diff --git a/doc/pic/config-center/how-to-implement-remote-configuration-management-in-dubbo-go-h.png b/doc/pic/config-center/how-to-implement-remote-configuration-management-in-dubbo-go-h.png deleted file mode 100644 index 47b9ea64dbe8d1b4d7431baaae74946e37dafa7b..0000000000000000000000000000000000000000 Binary files a/doc/pic/config-center/how-to-implement-remote-configuration-management-in-dubbo-go-h.png and /dev/null differ diff --git a/doc/pic/course/dubbo-go-application-dimension-registration-model-1.png b/doc/pic/course/dubbo-go-application-dimension-registration-model-1.png deleted file mode 100644 index fd2cc222c855d2b2f5b9f2040c33af4dc1ccc764..0000000000000000000000000000000000000000 Binary files a/doc/pic/course/dubbo-go-application-dimension-registration-model-1.png and /dev/null differ diff --git a/doc/pic/course/dubbo-go-application-dimension-registration-model-2.png b/doc/pic/course/dubbo-go-application-dimension-registration-model-2.png deleted file mode 100644 index b674f2062988fd15dd3452b958b79916d2aba96c..0000000000000000000000000000000000000000 Binary files a/doc/pic/course/dubbo-go-application-dimension-registration-model-2.png and /dev/null differ diff --git a/doc/pic/course/dubbo-go-application-dimension-registration-model-3.png b/doc/pic/course/dubbo-go-application-dimension-registration-model-3.png deleted file mode 100644 index eaa1ec0e79fa030f2e3576115e40a3739d95e11f..0000000000000000000000000000000000000000 Binary files a/doc/pic/course/dubbo-go-application-dimension-registration-model-3.png and /dev/null differ diff --git a/doc/pic/course/dubbo-go-application-dimension-registration-model-4.png b/doc/pic/course/dubbo-go-application-dimension-registration-model-4.png deleted file mode 100644 index 6fee638701706bcc78029a0b2ffbdf7c0f58b1b9..0000000000000000000000000000000000000000 Binary files a/doc/pic/course/dubbo-go-application-dimension-registration-model-4.png and /dev/null differ diff --git a/doc/pic/course/mosn-dubbo-go-1.png b/doc/pic/course/mosn-dubbo-go-1.png deleted file mode 100644 index 19d29f634a13aaef8eeaa7574815f3ee585ad498..0000000000000000000000000000000000000000 Binary files a/doc/pic/course/mosn-dubbo-go-1.png and /dev/null differ diff --git a/doc/pic/course/mosn-dubbo-go-2.png b/doc/pic/course/mosn-dubbo-go-2.png deleted file mode 100644 index 52417add37e2f207d799658e46271bd9c996367c..0000000000000000000000000000000000000000 Binary files a/doc/pic/course/mosn-dubbo-go-2.png and /dev/null differ diff --git a/doc/pic/course/mosn-dubbo-go-3.png b/doc/pic/course/mosn-dubbo-go-3.png deleted file mode 100644 index 46c68956d5dda34774505da7012fa39e55dc786e..0000000000000000000000000000000000000000 Binary files a/doc/pic/course/mosn-dubbo-go-3.png and /dev/null differ diff --git a/doc/pic/course/mosn-dubbo-go-4.png b/doc/pic/course/mosn-dubbo-go-4.png deleted file mode 100644 index 2b938a4f959f87bdcd6e923cbe0267ff2211f307..0000000000000000000000000000000000000000 Binary files a/doc/pic/course/mosn-dubbo-go-4.png and /dev/null differ diff --git a/doc/pic/course/mosn-dubbo-go-5.png b/doc/pic/course/mosn-dubbo-go-5.png deleted file mode 100644 index b3cd8c46988d50d56ba0499750ee2124b798c406..0000000000000000000000000000000000000000 Binary files a/doc/pic/course/mosn-dubbo-go-5.png and /dev/null differ diff --git a/doc/pic/course/practice-and-exploration-of-dubbo-go-1.png b/doc/pic/course/practice-and-exploration-of-dubbo-go-1.png deleted file mode 100644 index 2b689316b08e9c20948a14c37dbb6dd2aeb4b13e..0000000000000000000000000000000000000000 Binary files a/doc/pic/course/practice-and-exploration-of-dubbo-go-1.png and /dev/null differ diff --git a/doc/pic/course/practice-and-exploration-of-dubbo-go-2.png b/doc/pic/course/practice-and-exploration-of-dubbo-go-2.png deleted file mode 100644 index d3b93e98f65de43f5348153b534fea7fe980c919..0000000000000000000000000000000000000000 Binary files a/doc/pic/course/practice-and-exploration-of-dubbo-go-2.png and /dev/null differ diff --git a/doc/pic/course/practice-and-exploration-of-dubbo-go-3.png b/doc/pic/course/practice-and-exploration-of-dubbo-go-3.png deleted file mode 100644 index 92ede55f4c3b2f887893a2b693208a6b3cda0225..0000000000000000000000000000000000000000 Binary files a/doc/pic/course/practice-and-exploration-of-dubbo-go-3.png and /dev/null differ diff --git a/doc/pic/course/practice-and-exploration-of-dubbo-go-4.png b/doc/pic/course/practice-and-exploration-of-dubbo-go-4.png deleted file mode 100644 index f87020480fce9deeef5441be62528fee6bf1c91a..0000000000000000000000000000000000000000 Binary files a/doc/pic/course/practice-and-exploration-of-dubbo-go-4.png and /dev/null differ diff --git a/doc/pic/course/ten-year-dubbo-1.png b/doc/pic/course/ten-year-dubbo-1.png deleted file mode 100644 index afce621e6dc5c5a1f7b119a6e071fcaa0f0a2c33..0000000000000000000000000000000000000000 Binary files a/doc/pic/course/ten-year-dubbo-1.png and /dev/null differ diff --git a/doc/pic/course/ten-year-dubbo-2.png b/doc/pic/course/ten-year-dubbo-2.png deleted file mode 100644 index 82f1a26d16fd6f839ddbc2a2ff2fd5fb72128cdf..0000000000000000000000000000000000000000 Binary files a/doc/pic/course/ten-year-dubbo-2.png and /dev/null differ diff --git a/doc/pic/course/the-5th-years-of-dubbo-go-a.png b/doc/pic/course/the-5th-years-of-dubbo-go-a.png deleted file mode 100644 index 6e8fa474f8f791e43770b872499d672383bf05e3..0000000000000000000000000000000000000000 Binary files a/doc/pic/course/the-5th-years-of-dubbo-go-a.png and /dev/null differ diff --git a/doc/pic/course/the-5th-years-of-dubbo-go-b.png b/doc/pic/course/the-5th-years-of-dubbo-go-b.png deleted file mode 100644 index 09bb6917172f19b5f6dfd7dedaa23c98d74a5cc4..0000000000000000000000000000000000000000 Binary files a/doc/pic/course/the-5th-years-of-dubbo-go-b.png and /dev/null differ diff --git a/doc/pic/course/the-5th-years-of-dubbo-go-c.png b/doc/pic/course/the-5th-years-of-dubbo-go-c.png deleted file mode 100644 index 31b09ae1a7c5866c3f24ff095ba326d9066d66dd..0000000000000000000000000000000000000000 Binary files a/doc/pic/course/the-5th-years-of-dubbo-go-c.png and /dev/null differ diff --git a/doc/pic/getty/getty_connected_udp_socket.gif b/doc/pic/getty/getty_connected_udp_socket.gif deleted file mode 100644 index 011cd2329e874636b881012129cdd8256dd6da10..0000000000000000000000000000000000000000 Binary files a/doc/pic/getty/getty_connected_udp_socket.gif and /dev/null differ diff --git a/doc/pic/getty/getty_dns_udp.gif b/doc/pic/getty/getty_dns_udp.gif deleted file mode 100644 index 253dddf2395a4624ba4bb8661806851000f46c3d..0000000000000000000000000000000000000000 Binary files a/doc/pic/getty/getty_dns_udp.gif and /dev/null differ diff --git a/doc/pic/hessian2/dubbo-go-hessian2-performance-optimization-a.png b/doc/pic/hessian2/dubbo-go-hessian2-performance-optimization-a.png deleted file mode 100644 index 484e07d3acf12da294bc01ed462a752ba8df6261..0000000000000000000000000000000000000000 Binary files a/doc/pic/hessian2/dubbo-go-hessian2-performance-optimization-a.png and /dev/null differ diff --git a/doc/pic/hessian2/dubbo-go-hessian2-performance-optimization-b.png b/doc/pic/hessian2/dubbo-go-hessian2-performance-optimization-b.png deleted file mode 100644 index 2a208c6952177dd56e5c78ddf3afbfd365050803..0000000000000000000000000000000000000000 Binary files a/doc/pic/hessian2/dubbo-go-hessian2-performance-optimization-b.png and /dev/null differ diff --git a/doc/pic/hessian2/dubbo-go-hessian2-performance-optimization-c.png b/doc/pic/hessian2/dubbo-go-hessian2-performance-optimization-c.png deleted file mode 100644 index f89c20fe3b3c6184a653887c0aae41b2c767e3cf..0000000000000000000000000000000000000000 Binary files a/doc/pic/hessian2/dubbo-go-hessian2-performance-optimization-c.png and /dev/null differ diff --git a/doc/pic/hessian2/dubbo-go-hessian2-performance-optimization-d.png b/doc/pic/hessian2/dubbo-go-hessian2-performance-optimization-d.png deleted file mode 100644 index 5d639b918a5da58e50ac4c1bf65bc959247f7c76..0000000000000000000000000000000000000000 Binary files a/doc/pic/hessian2/dubbo-go-hessian2-performance-optimization-d.png and /dev/null differ diff --git a/doc/pic/hessian2/dubbo-go-hessian2-performance-optimization-e.png b/doc/pic/hessian2/dubbo-go-hessian2-performance-optimization-e.png deleted file mode 100644 index 940950ec290a4a1ff415179156a372296acb0114..0000000000000000000000000000000000000000 Binary files a/doc/pic/hessian2/dubbo-go-hessian2-performance-optimization-e.png and /dev/null differ diff --git a/doc/pic/hessian2/dubbo-go-hessian2-performance-optimization-f.png b/doc/pic/hessian2/dubbo-go-hessian2-performance-optimization-f.png deleted file mode 100644 index 26a543b22739038730542e984b299fea078b318d..0000000000000000000000000000000000000000 Binary files a/doc/pic/hessian2/dubbo-go-hessian2-performance-optimization-f.png and /dev/null differ diff --git a/doc/pic/hessian2/dubbo-go-hessian2-performance-optimization-g.png b/doc/pic/hessian2/dubbo-go-hessian2-performance-optimization-g.png deleted file mode 100644 index a98c7222d7bf1de7e241015a2aa3088f758d0b89..0000000000000000000000000000000000000000 Binary files a/doc/pic/hessian2/dubbo-go-hessian2-performance-optimization-g.png and /dev/null differ diff --git a/doc/pic/hessian2/dubbo-go-hessian2-performance-optimization-h.png b/doc/pic/hessian2/dubbo-go-hessian2-performance-optimization-h.png deleted file mode 100644 index 3da98bfe966b5aed47899c090095c567f22f7d3b..0000000000000000000000000000000000000000 Binary files a/doc/pic/hessian2/dubbo-go-hessian2-performance-optimization-h.png and /dev/null differ diff --git a/doc/pic/hessian2/mosn-performance-optimization-1.png b/doc/pic/hessian2/mosn-performance-optimization-1.png deleted file mode 100644 index c6090d4e51e32e96d1626e2861b00b9d667c34ee..0000000000000000000000000000000000000000 Binary files a/doc/pic/hessian2/mosn-performance-optimization-1.png and /dev/null differ diff --git a/doc/pic/hessian2/mosn-performance-optimization-2.png b/doc/pic/hessian2/mosn-performance-optimization-2.png deleted file mode 100644 index 7fccfa6d658b3714d56064011fa2a082a28aff3e..0000000000000000000000000000000000000000 Binary files a/doc/pic/hessian2/mosn-performance-optimization-2.png and /dev/null differ diff --git a/doc/pic/hessian2/mosn-performance-optimization-3.png b/doc/pic/hessian2/mosn-performance-optimization-3.png deleted file mode 100644 index b9b86ce5d9e45735318c1d1b22ade1a1083ff82d..0000000000000000000000000000000000000000 Binary files a/doc/pic/hessian2/mosn-performance-optimization-3.png and /dev/null differ diff --git a/doc/pic/hessian2/mosn-performance-optimization-4.png b/doc/pic/hessian2/mosn-performance-optimization-4.png deleted file mode 100644 index d310db5635f4de225084aa5b5c08650b06640846..0000000000000000000000000000000000000000 Binary files a/doc/pic/hessian2/mosn-performance-optimization-4.png and /dev/null differ diff --git a/doc/pic/interview/dubbo-go-published-a.jpg b/doc/pic/interview/dubbo-go-published-a.jpg deleted file mode 100644 index ce27147a1ad97ba3b227837b2e98464ff813def1..0000000000000000000000000000000000000000 Binary files a/doc/pic/interview/dubbo-go-published-a.jpg and /dev/null differ diff --git a/doc/pic/interview/dubbo-go-published-b.jpg b/doc/pic/interview/dubbo-go-published-b.jpg deleted file mode 100644 index 9cc7e6486c98ac4e12f7a989524353c3aa3d1178..0000000000000000000000000000000000000000 Binary files a/doc/pic/interview/dubbo-go-published-b.jpg and /dev/null differ diff --git a/doc/pic/interview/dubbo-go-published-c.jpg b/doc/pic/interview/dubbo-go-published-c.jpg deleted file mode 100644 index 69c70c7d516924e54003bf5bd49793befb09439d..0000000000000000000000000000000000000000 Binary files a/doc/pic/interview/dubbo-go-published-c.jpg and /dev/null differ diff --git a/doc/pic/interview/what's-new-in-dubbo-go-v1.4.0-a.png b/doc/pic/interview/what's-new-in-dubbo-go-v1.4.0-a.png deleted file mode 100644 index 97f3caa29e076b651ea4477cdac637c6dc4bee26..0000000000000000000000000000000000000000 Binary files a/doc/pic/interview/what's-new-in-dubbo-go-v1.4.0-a.png and /dev/null differ diff --git a/doc/pic/interview/what's-new-in-dubbo-go-v1.4.0-b.png b/doc/pic/interview/what's-new-in-dubbo-go-v1.4.0-b.png deleted file mode 100644 index a491cbbf46fff38962456b85cf0e4ee37b5cf128..0000000000000000000000000000000000000000 Binary files a/doc/pic/interview/what's-new-in-dubbo-go-v1.4.0-b.png and /dev/null differ diff --git a/doc/pic/interview/what's-new-in-dubbo-go-v1.4.0-c.png b/doc/pic/interview/what's-new-in-dubbo-go-v1.4.0-c.png deleted file mode 100644 index fa867fc6cf437daf5f67e0a03d34f3daa839b43f..0000000000000000000000000000000000000000 Binary files a/doc/pic/interview/what's-new-in-dubbo-go-v1.4.0-c.png and /dev/null differ diff --git a/doc/pic/interview/what's-new-in-dubbo-go-v1.4.0-d.png b/doc/pic/interview/what's-new-in-dubbo-go-v1.4.0-d.png deleted file mode 100644 index 5fe471a16d412741aa4668f9dbd4135d4281bbc4..0000000000000000000000000000000000000000 Binary files a/doc/pic/interview/what's-new-in-dubbo-go-v1.4.0-d.png and /dev/null differ diff --git a/doc/pic/interview/what's-new-in-dubbo-go-v1.4.0-e.png b/doc/pic/interview/what's-new-in-dubbo-go-v1.4.0-e.png deleted file mode 100644 index 679e90abfc8e6ebf744902f89de2cf29e9789719..0000000000000000000000000000000000000000 Binary files a/doc/pic/interview/what's-new-in-dubbo-go-v1.4.0-e.png and /dev/null differ diff --git a/doc/pic/interview/what's-new-in-dubbo-go-v1.5-1.png b/doc/pic/interview/what's-new-in-dubbo-go-v1.5-1.png deleted file mode 100644 index 91444d7d69d92c4980404d18e6cad89dd4a4c2d3..0000000000000000000000000000000000000000 Binary files a/doc/pic/interview/what's-new-in-dubbo-go-v1.5-1.png and /dev/null differ diff --git a/doc/pic/interview/what's-new-in-dubbo-go-v1.5-2.png b/doc/pic/interview/what's-new-in-dubbo-go-v1.5-2.png deleted file mode 100644 index 6735eacda0db0eb2a76681a3df154920d09eb522..0000000000000000000000000000000000000000 Binary files a/doc/pic/interview/what's-new-in-dubbo-go-v1.5-2.png and /dev/null differ diff --git a/doc/pic/interview/what's-new-in-dubbo-go-v1.5-3.png b/doc/pic/interview/what's-new-in-dubbo-go-v1.5-3.png deleted file mode 100644 index f61a18a18ccf3a1490981d66e11be75565363010..0000000000000000000000000000000000000000 Binary files a/doc/pic/interview/what's-new-in-dubbo-go-v1.5-3.png and /dev/null differ diff --git a/doc/pic/registry-center/design-and-implementation-of-dubbo-go-and-k8s-registry-1.png b/doc/pic/registry-center/design-and-implementation-of-dubbo-go-and-k8s-registry-1.png deleted file mode 100644 index 506eb2101908ab73d6cf9dcfb740a746e5612e04..0000000000000000000000000000000000000000 Binary files a/doc/pic/registry-center/design-and-implementation-of-dubbo-go-and-k8s-registry-1.png and /dev/null differ diff --git a/doc/pic/registry-center/design-and-implementation-of-dubbo-go-and-k8s-registry-2.png b/doc/pic/registry-center/design-and-implementation-of-dubbo-go-and-k8s-registry-2.png deleted file mode 100644 index 6e7ce8b04656c0ad354a0720e914c60151822caf..0000000000000000000000000000000000000000 Binary files a/doc/pic/registry-center/design-and-implementation-of-dubbo-go-and-k8s-registry-2.png and /dev/null differ diff --git a/doc/pic/registry-center/design-and-implementation-of-dubbo-go-and-k8s-registry-3.png b/doc/pic/registry-center/design-and-implementation-of-dubbo-go-and-k8s-registry-3.png deleted file mode 100644 index 99c2812125659bc708cb1abf475df7d40b9e97b4..0000000000000000000000000000000000000000 Binary files a/doc/pic/registry-center/design-and-implementation-of-dubbo-go-and-k8s-registry-3.png and /dev/null differ diff --git a/doc/pic/registry-center/dubbo-go-registry-center--nacos-a.png b/doc/pic/registry-center/dubbo-go-registry-center--nacos-a.png deleted file mode 100644 index dafc1505533b67fd61c26ba284fb13fb70410639..0000000000000000000000000000000000000000 Binary files a/doc/pic/registry-center/dubbo-go-registry-center--nacos-a.png and /dev/null differ diff --git a/doc/pic/registry-center/dubbo-go-registry-center--nacos-b.png b/doc/pic/registry-center/dubbo-go-registry-center--nacos-b.png deleted file mode 100644 index 85b3997c8fb22918d311d160a3154ef4e608c60f..0000000000000000000000000000000000000000 Binary files a/doc/pic/registry-center/dubbo-go-registry-center--nacos-b.png and /dev/null differ diff --git a/doc/pic/registry-center/dubbo-go-registry-center--nacos-c.png b/doc/pic/registry-center/dubbo-go-registry-center--nacos-c.png deleted file mode 100644 index 11ada496e3702c70390b7de1bb37e617cf9c7e12..0000000000000000000000000000000000000000 Binary files a/doc/pic/registry-center/dubbo-go-registry-center--nacos-c.png and /dev/null differ diff --git a/doc/pic/registry-center/dubbo-go-registry-center--nacos-d.png b/doc/pic/registry-center/dubbo-go-registry-center--nacos-d.png deleted file mode 100644 index e66f3bd3895cfaddb1293e5d54cd45f3859afcfb..0000000000000000000000000000000000000000 Binary files a/doc/pic/registry-center/dubbo-go-registry-center--nacos-d.png and /dev/null differ diff --git a/doc/pic/registry-center/dubbo-go-registry-center--nacos-e.png b/doc/pic/registry-center/dubbo-go-registry-center--nacos-e.png deleted file mode 100644 index a02d9c7322aa118e6d8eaab014ff41ef9febb49a..0000000000000000000000000000000000000000 Binary files a/doc/pic/registry-center/dubbo-go-registry-center--nacos-e.png and /dev/null differ diff --git a/doc/pic/registry-center/dubbo-go-registry-center--nacos-f.png b/doc/pic/registry-center/dubbo-go-registry-center--nacos-f.png deleted file mode 100644 index 4d97fcf4c20b68723933ba05d9919910a334ab56..0000000000000000000000000000000000000000 Binary files a/doc/pic/registry-center/dubbo-go-registry-center--nacos-f.png and /dev/null differ diff --git a/doc/pic/registry-center/dubbo-go-registry-center--nacos-g.png b/doc/pic/registry-center/dubbo-go-registry-center--nacos-g.png deleted file mode 100644 index da690449bd3b1be01d50cdab787fdf7d47c62bb2..0000000000000000000000000000000000000000 Binary files a/doc/pic/registry-center/dubbo-go-registry-center--nacos-g.png and /dev/null differ diff --git a/doc/pic/registry-center/dubbo-go-registry-center--nacos-h.png b/doc/pic/registry-center/dubbo-go-registry-center--nacos-h.png deleted file mode 100644 index 1a3e6834fb4e92b4a840e7741ad271adc1a0ff7e..0000000000000000000000000000000000000000 Binary files a/doc/pic/registry-center/dubbo-go-registry-center--nacos-h.png and /dev/null differ diff --git a/doc/pic/registry-center/dubbo-go-registry-center--nacos-i.png b/doc/pic/registry-center/dubbo-go-registry-center--nacos-i.png deleted file mode 100644 index a5e7503ed3b17933aeb4ca2208b367851feb15f6..0000000000000000000000000000000000000000 Binary files a/doc/pic/registry-center/dubbo-go-registry-center--nacos-i.png and /dev/null differ diff --git a/doc/pic/registry-center/dubbo-go-registry-center--nacos-j.png b/doc/pic/registry-center/dubbo-go-registry-center--nacos-j.png deleted file mode 100644 index a05602b8154e3f710c457f4bf62410236d3547dd..0000000000000000000000000000000000000000 Binary files a/doc/pic/registry-center/dubbo-go-registry-center--nacos-j.png and /dev/null differ diff --git a/doc/pic/routing-rule/how-to-implement-routing-rule-in-dubbo-go-a.png b/doc/pic/routing-rule/how-to-implement-routing-rule-in-dubbo-go-a.png deleted file mode 100644 index 87726d88484c23d6395023bb10e86009d59a1fd7..0000000000000000000000000000000000000000 Binary files a/doc/pic/routing-rule/how-to-implement-routing-rule-in-dubbo-go-a.png and /dev/null differ diff --git a/doc/pic/routing-rule/how-to-implement-routing-rule-in-dubbo-go-b.png b/doc/pic/routing-rule/how-to-implement-routing-rule-in-dubbo-go-b.png deleted file mode 100644 index c4f2c8dcaf39db8aeb3920dc638e3472bc0fc182..0000000000000000000000000000000000000000 Binary files a/doc/pic/routing-rule/how-to-implement-routing-rule-in-dubbo-go-b.png and /dev/null differ diff --git a/doc/pic/routing-rule/how-to-implement-routing-rule-in-dubbo-go-c.png b/doc/pic/routing-rule/how-to-implement-routing-rule-in-dubbo-go-c.png deleted file mode 100644 index c55fa2e7af662598b2fea728ac10f8798450ad9c..0000000000000000000000000000000000000000 Binary files a/doc/pic/routing-rule/how-to-implement-routing-rule-in-dubbo-go-c.png and /dev/null differ diff --git a/doc/pic/routing-rule/how-to-implement-routing-rule-in-dubbo-go-d.png b/doc/pic/routing-rule/how-to-implement-routing-rule-in-dubbo-go-d.png deleted file mode 100644 index 3d57d26861d6bfd6fbf43f077a30600df2ce8629..0000000000000000000000000000000000000000 Binary files a/doc/pic/routing-rule/how-to-implement-routing-rule-in-dubbo-go-d.png and /dev/null differ diff --git a/doc/pic/routing-rule/how-to-implement-routing-rule-in-dubbo-go-e.png b/doc/pic/routing-rule/how-to-implement-routing-rule-in-dubbo-go-e.png deleted file mode 100644 index 0474e7c9279fd7619e42db16076436adfae155dd..0000000000000000000000000000000000000000 Binary files a/doc/pic/routing-rule/how-to-implement-routing-rule-in-dubbo-go-e.png and /dev/null differ diff --git a/doc/pic/routing-rule/how-to-implement-routing-rule-in-dubbo-go-f.png b/doc/pic/routing-rule/how-to-implement-routing-rule-in-dubbo-go-f.png deleted file mode 100644 index f763f7c51d3fa1a679ae015797000f7fb85a8c2d..0000000000000000000000000000000000000000 Binary files a/doc/pic/routing-rule/how-to-implement-routing-rule-in-dubbo-go-f.png and /dev/null differ diff --git a/doc/pic/routing-rule/how-to-implement-routing-rule-in-dubbo-go-g.png b/doc/pic/routing-rule/how-to-implement-routing-rule-in-dubbo-go-g.png deleted file mode 100644 index 5d71cd67b652d03e432c25eca905d880b91e14a3..0000000000000000000000000000000000000000 Binary files a/doc/pic/routing-rule/how-to-implement-routing-rule-in-dubbo-go-g.png and /dev/null differ diff --git a/doc/pic/routing-rule/how-to-implement-routing-rule-in-dubbo-go-h.png b/doc/pic/routing-rule/how-to-implement-routing-rule-in-dubbo-go-h.png deleted file mode 100644 index 710ff688cc792ae2e224c76140dedb8a8e3bdcad..0000000000000000000000000000000000000000 Binary files a/doc/pic/routing-rule/how-to-implement-routing-rule-in-dubbo-go-h.png and /dev/null differ diff --git a/doc/pic/routing-rule/how-to-implement-routing-rule-in-dubbo-go-i.png b/doc/pic/routing-rule/how-to-implement-routing-rule-in-dubbo-go-i.png deleted file mode 100644 index 6112cfe105623963c5d720c9244c4cc0015b63e4..0000000000000000000000000000000000000000 Binary files a/doc/pic/routing-rule/how-to-implement-routing-rule-in-dubbo-go-i.png and /dev/null differ diff --git a/doc/pic/routing-rule/how-to-implement-routing-rule-in-dubbo-go-j.png b/doc/pic/routing-rule/how-to-implement-routing-rule-in-dubbo-go-j.png deleted file mode 100644 index 10e69939abb5e67139a8478a1b7750ae6066e73b..0000000000000000000000000000000000000000 Binary files a/doc/pic/routing-rule/how-to-implement-routing-rule-in-dubbo-go-j.png and /dev/null differ diff --git a/doc/pic/rpc/dubb-go-adaptive-grpc-a.png b/doc/pic/rpc/dubb-go-adaptive-grpc-a.png deleted file mode 100644 index c71a36149815c14eff9f730d1e9dae01df8f20d4..0000000000000000000000000000000000000000 Binary files a/doc/pic/rpc/dubb-go-adaptive-grpc-a.png and /dev/null differ diff --git a/doc/pic/rpc/dubb-go-adaptive-grpc-b.png b/doc/pic/rpc/dubb-go-adaptive-grpc-b.png deleted file mode 100644 index b401df59e5255cd4263d623658e40fcf0ccf6710..0000000000000000000000000000000000000000 Binary files a/doc/pic/rpc/dubb-go-adaptive-grpc-b.png and /dev/null differ diff --git a/doc/pic/rpc/dubb-go-adaptive-grpc-c.png b/doc/pic/rpc/dubb-go-adaptive-grpc-c.png deleted file mode 100644 index 66fc888c5431d5e53e030bb15dadaa065919149f..0000000000000000000000000000000000000000 Binary files a/doc/pic/rpc/dubb-go-adaptive-grpc-c.png and /dev/null differ diff --git a/doc/pic/rpc/dubb-go-adaptive-grpc-d.png b/doc/pic/rpc/dubb-go-adaptive-grpc-d.png deleted file mode 100644 index 59160482c23c2170624c1f37dd8d3b40414c5565..0000000000000000000000000000000000000000 Binary files a/doc/pic/rpc/dubb-go-adaptive-grpc-d.png and /dev/null differ diff --git a/doc/pic/rpc/dubb-go-adaptive-grpc-e.png b/doc/pic/rpc/dubb-go-adaptive-grpc-e.png deleted file mode 100644 index 9f81f6226db1284f12d5d0b7cd4df3ffe096732e..0000000000000000000000000000000000000000 Binary files a/doc/pic/rpc/dubb-go-adaptive-grpc-e.png and /dev/null differ diff --git a/doc/pic/rpc/dubb-go-adaptive-grpc-f.png b/doc/pic/rpc/dubb-go-adaptive-grpc-f.png deleted file mode 100644 index d35e11c3f17c60cc02462c67edb1e5dd84e5548f..0000000000000000000000000000000000000000 Binary files a/doc/pic/rpc/dubb-go-adaptive-grpc-f.png and /dev/null differ diff --git a/doc/pic/rpc/dubb-go-adaptive-grpc-g.png b/doc/pic/rpc/dubb-go-adaptive-grpc-g.png deleted file mode 100644 index 9c52e9e88abaa294c81573abade80b00c3bf9ea7..0000000000000000000000000000000000000000 Binary files a/doc/pic/rpc/dubb-go-adaptive-grpc-g.png and /dev/null differ diff --git a/doc/pic/rpc/dubb-go-adaptive-grpc-h.png b/doc/pic/rpc/dubb-go-adaptive-grpc-h.png deleted file mode 100644 index a1833f0fa1a35b867d4c112773b0c763f3c9f407..0000000000000000000000000000000000000000 Binary files a/doc/pic/rpc/dubb-go-adaptive-grpc-h.png and /dev/null differ diff --git a/doc/pic/rpc/dubb-go-adaptive-grpc-i.png b/doc/pic/rpc/dubb-go-adaptive-grpc-i.png deleted file mode 100644 index a5d0deb864c6d6cea753def7aac226b320a8b72f..0000000000000000000000000000000000000000 Binary files a/doc/pic/rpc/dubb-go-adaptive-grpc-i.png and /dev/null differ diff --git a/doc/pic/rpc/dubb-go-adaptive-grpc-j.png b/doc/pic/rpc/dubb-go-adaptive-grpc-j.png deleted file mode 100644 index de21c4fa2d4c2cadfc9a0488bc005db221086713..0000000000000000000000000000000000000000 Binary files a/doc/pic/rpc/dubb-go-adaptive-grpc-j.png and /dev/null differ diff --git a/doc/pic/rpc/dubb-go-adaptive-grpc-k.png b/doc/pic/rpc/dubb-go-adaptive-grpc-k.png deleted file mode 100644 index 813cee6ce0fc54f82634360566b26dd486ffc3bc..0000000000000000000000000000000000000000 Binary files a/doc/pic/rpc/dubb-go-adaptive-grpc-k.png and /dev/null differ diff --git a/doc/pic/rpc/dubb-go-adaptive-grpc-l.png b/doc/pic/rpc/dubb-go-adaptive-grpc-l.png deleted file mode 100644 index 747a5a2059cfb63b05673c43d5d95d921b573e08..0000000000000000000000000000000000000000 Binary files a/doc/pic/rpc/dubb-go-adaptive-grpc-l.png and /dev/null differ diff --git a/doc/pic/rpc/dubb-go-adaptive-grpc-m.png b/doc/pic/rpc/dubb-go-adaptive-grpc-m.png deleted file mode 100644 index 55a1ae13de227728bf04371e0bd9a1a0e4ec6fba..0000000000000000000000000000000000000000 Binary files a/doc/pic/rpc/dubb-go-adaptive-grpc-m.png and /dev/null differ diff --git a/doc/pic/rpc/dubb-go-adaptive-grpc-n.png b/doc/pic/rpc/dubb-go-adaptive-grpc-n.png deleted file mode 100644 index 7bf287145a946768ba0ac3d17d6602f1972a1ffd..0000000000000000000000000000000000000000 Binary files a/doc/pic/rpc/dubb-go-adaptive-grpc-n.png and /dev/null differ diff --git a/doc/pic/rpc/dubbo-go-trusted-RPC-call-implementation-1.png b/doc/pic/rpc/dubbo-go-trusted-RPC-call-implementation-1.png deleted file mode 100644 index 8d5fbd5ff6d32ca95c5d03816442d9156e63776e..0000000000000000000000000000000000000000 Binary files a/doc/pic/rpc/dubbo-go-trusted-RPC-call-implementation-1.png and /dev/null differ diff --git a/doc/pic/service-governance/dubbo-go-sentinel-a.png b/doc/pic/service-governance/dubbo-go-sentinel-a.png deleted file mode 100644 index 3806989c8b578e9cf4eae822e005493de3043ddd..0000000000000000000000000000000000000000 Binary files a/doc/pic/service-governance/dubbo-go-sentinel-a.png and /dev/null differ diff --git a/doc/pic/service-governance/dubbo-go-sentinel-b.png b/doc/pic/service-governance/dubbo-go-sentinel-b.png deleted file mode 100644 index 03df855c491f5b02a371a8e5504e3b6e5a55916b..0000000000000000000000000000000000000000 Binary files a/doc/pic/service-governance/dubbo-go-sentinel-b.png and /dev/null differ diff --git a/doc/pic/service-governance/dubbo-go-tps-limit-design-and-implement-a.png b/doc/pic/service-governance/dubbo-go-tps-limit-design-and-implement-a.png deleted file mode 100644 index 8a34165318bf0d55a0c43943a082cf1119b8ffdb..0000000000000000000000000000000000000000 Binary files a/doc/pic/service-governance/dubbo-go-tps-limit-design-and-implement-a.png and /dev/null differ diff --git a/doc/pic/service-governance/dubbo-go-tps-limit-design-and-implement-b.png b/doc/pic/service-governance/dubbo-go-tps-limit-design-and-implement-b.png deleted file mode 100644 index 3a6f1f15122dd058727617f2168e3eb364957fe0..0000000000000000000000000000000000000000 Binary files a/doc/pic/service-governance/dubbo-go-tps-limit-design-and-implement-b.png and /dev/null differ diff --git a/doc/pic/service-governance/dubbo-go-tps-limit-design-and-implement-c.png b/doc/pic/service-governance/dubbo-go-tps-limit-design-and-implement-c.png deleted file mode 100644 index 77f10d99a5efbda5da57911884e7d884d1a94167..0000000000000000000000000000000000000000 Binary files a/doc/pic/service-governance/dubbo-go-tps-limit-design-and-implement-c.png and /dev/null differ diff --git a/doc/pic/service-governance/dubbo-go-tps-limit-design-and-implement-d.png b/doc/pic/service-governance/dubbo-go-tps-limit-design-and-implement-d.png deleted file mode 100644 index 65b7185a8a1c306ce1712208bedba951f38b6c40..0000000000000000000000000000000000000000 Binary files a/doc/pic/service-governance/dubbo-go-tps-limit-design-and-implement-d.png and /dev/null differ diff --git a/doc/pic/service-governance/dubbo-go-tps-limit-design-and-implement-e.png b/doc/pic/service-governance/dubbo-go-tps-limit-design-and-implement-e.png deleted file mode 100644 index 07740479b74ca686bed1af5221b49087916ca216..0000000000000000000000000000000000000000 Binary files a/doc/pic/service-governance/dubbo-go-tps-limit-design-and-implement-e.png and /dev/null differ diff --git a/doc/pic/service-governance/dubbo-go-tps-limit-design-and-implement-f.png b/doc/pic/service-governance/dubbo-go-tps-limit-design-and-implement-f.png deleted file mode 100644 index 49b30ef7fe1a0a82030b3489ac9eca9301609c2c..0000000000000000000000000000000000000000 Binary files a/doc/pic/service-governance/dubbo-go-tps-limit-design-and-implement-f.png and /dev/null differ diff --git a/doc/pic/service-governance/dubbo-go-tps-limit-design-and-implement-g.png b/doc/pic/service-governance/dubbo-go-tps-limit-design-and-implement-g.png deleted file mode 100644 index 22d4e6f01c53a790586a70338e455fdaac472d67..0000000000000000000000000000000000000000 Binary files a/doc/pic/service-governance/dubbo-go-tps-limit-design-and-implement-g.png and /dev/null differ diff --git a/doc/pic/service-governance/dubbo-go-tps-limit-design-and-implement-h.png b/doc/pic/service-governance/dubbo-go-tps-limit-design-and-implement-h.png deleted file mode 100644 index 132057b12a8484969ca98b4ec90cecf2c382fc5b..0000000000000000000000000000000000000000 Binary files a/doc/pic/service-governance/dubbo-go-tps-limit-design-and-implement-h.png and /dev/null differ diff --git a/doc/pic/service-governance/dubbo-go-tps-limit-design-and-implement-i.png b/doc/pic/service-governance/dubbo-go-tps-limit-design-and-implement-i.png deleted file mode 100644 index b39a83787b085b902d50866703b454c4573fdaf3..0000000000000000000000000000000000000000 Binary files a/doc/pic/service-governance/dubbo-go-tps-limit-design-and-implement-i.png and /dev/null differ diff --git a/doc/pic/service-governance/dubbo-go-tps-limit-design-and-implement-j.png b/doc/pic/service-governance/dubbo-go-tps-limit-design-and-implement-j.png deleted file mode 100644 index e671ff58ce055934a54528696135f42a5e848cd1..0000000000000000000000000000000000000000 Binary files a/doc/pic/service-governance/dubbo-go-tps-limit-design-and-implement-j.png and /dev/null differ diff --git a/doc/pic/service-governance/implementation-of-rest-protocol-in-dubbo-go-1.jpeg b/doc/pic/service-governance/implementation-of-rest-protocol-in-dubbo-go-1.jpeg deleted file mode 100644 index fa9f003c4a31a6d054290ab5f269f146a34a75d6..0000000000000000000000000000000000000000 Binary files a/doc/pic/service-governance/implementation-of-rest-protocol-in-dubbo-go-1.jpeg and /dev/null differ diff --git a/test/integrate/dubbo/go-client/go.sum b/test/integrate/dubbo/go-client/go.sum index 7bb51161b1a85755531e6c3ad5245e5918cb9680..fc378395782f0f7e8032cdaed2ec4c4b0266c149 100644 --- a/test/integrate/dubbo/go-client/go.sum +++ b/test/integrate/dubbo/go-client/go.sum @@ -1,4 +1,5 @@ github.com/apache/dubbo-go-hessian2 v1.6.0-rc1.0.20200906044240-6c1fb5c3bd44/go.mod h1:7rEw9guWABQa6Aqb8HeZcsYPHsOS7XT1qtJvkmI6c5w= +github.com/apache/dubbo-go-hessian2 v1.7.0/go.mod h1:7rEw9guWABQa6Aqb8HeZcsYPHsOS7XT1qtJvkmI6c5w= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dubbogo/gost v1.9.0/go.mod h1:pPTjVyoJan3aPxBPNUX0ADkXjPibLo+/Ib0/fADXSG8= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= diff --git a/test/integrate/dubbo/go-server/go.sum b/test/integrate/dubbo/go-server/go.sum index 7bb51161b1a85755531e6c3ad5245e5918cb9680..fc378395782f0f7e8032cdaed2ec4c4b0266c149 100644 --- a/test/integrate/dubbo/go-server/go.sum +++ b/test/integrate/dubbo/go-server/go.sum @@ -1,4 +1,5 @@ github.com/apache/dubbo-go-hessian2 v1.6.0-rc1.0.20200906044240-6c1fb5c3bd44/go.mod h1:7rEw9guWABQa6Aqb8HeZcsYPHsOS7XT1qtJvkmI6c5w= +github.com/apache/dubbo-go-hessian2 v1.7.0/go.mod h1:7rEw9guWABQa6Aqb8HeZcsYPHsOS7XT1qtJvkmI6c5w= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dubbogo/gost v1.9.0/go.mod h1:pPTjVyoJan3aPxBPNUX0ADkXjPibLo+/Ib0/fADXSG8= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=