From d6a98e402e4eeeec3a408f184fe11643d76b6bf3 Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期三, 02 七月 2025 13:20:04 +0800
Subject: [PATCH] 1

---
 README.md |  271 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 270 insertions(+), 1 deletions(-)

diff --git a/README.md b/README.md
index 2d98e73..ec4243d 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,273 @@
-## algo-java
+## 浠嬬粛
+
+Dubbo鏄竴娆鹃珮鎬ц兘銆佽交閲忕骇鐨勫紑婧怞ava RPC锛圧emote Procedure
+Call锛岃繙绋嬭繃绋嬭皟鐢級妗嗘灦锛屽畠鎻愪緵浜嗗垎甯冨紡绯荤粺涓湇鍔′箣闂寸殑楂樻晥銆侀�忔槑鍖栫殑鏈嶅姟璋冪敤鏂规銆侱ubbo鏈�鍒濈敱闃块噷宸村反鍏徃寮�鍙戝苟寮�婧愶紝鐜板凡鎴愪负Apache椤剁骇椤圭洰銆�
+
+## 鏋舵瀯婕斿彉
+
+鍦ㄤ簡瑙ubbo涔嬪悗锛屾垜浠鐭ラ亾dubbo鍦ㄥ綋浠婁簰鑱旂綉鏋舵瀯涓湪浠�涔堟牱鐨勪綅缃紝鎴戜滑鍏堟潵鐪嬩竴涓灦鏋勬紨杩涘浘
+
+![image-20240611185459491](img/87db65d9f5a8ff7acba7367a440ef7a5.png)
+
+鑰屼簡瑙h繃feign鐨勫悓瀛﹁繖閲屽氨鍙互鎷垮畠鍜宒ubbo瀵规瘮锛屽湪涓婇潰鐨勫浘涓紝feign灏辨槸鍦ㄥ井鏈嶅姟鏋舵瀯鎵挎媴rpc妗嗘灦锛岃�宒ubbo灏卞湪鍦ㄤ笂闈㈢殑SOA锛堬紙Service-Oriented
+Architecture锛岄潰鍚戞湇鍔$殑鏋舵瀯锛夋槸涓�涓粍浠舵ā鍨嬶紝瀹冨皢搴旂敤绋嬪簭鐨勪笉鍚屽姛鑳藉崟鍏冿紙绉颁负鏈嶅姟锛夎繘琛屾媶鍒嗭紝骞堕�氳繃杩欎簺鏈嶅姟涔嬮棿瀹氫箟鑹ソ鐨勬帴鍙e拰濂戠害鑱旂郴璧锋潵銆傦級鏋舵瀯涓壙鎷卹pc妗嗘灦鐨勮鑹层��
+
+SOA鏋舵瀯锛屽氨鍍忔槸澶ч儴闂ㄥ埗锛屼竴涓儴闂ㄧ鐨勪簨鍎挎瘮杈冨锛屽嚑涓浉鍏崇殑宸ヤ綔涓�鍧楀効骞诧紝杩欐牱澶у鍗忎綔璧锋潵鏂逛究锛屼絾鏄儴闂ㄥ拰閮ㄩ棬涔嬮棿杩樻槸寰椾簰鐩搁厤鍚堬紝鏈夋椂鍊欐矡閫氬浜嗗氨澶嶆潅浜嗐�傝�屼笖锛岃繖绉嶆ā寮忎笅锛屽ぇ瀹剁敤鐨勫伐鍏峰拰娴佺▼灏介噺缁熶竴锛屼负浜嗗ソ閰嶅悎銆�
+寰湇鍔℃灦鏋勫憿锛屽氨鍍忔槸灏忓洟闃熷埗锛屾瘡涓皬鍥㈤槦灏变笓鏀讳竴浠朵簨锛岀壒鍒笓娉紝鑷繁绠¤嚜宸遍偅涓�鍧楋紝鍑轰簡闂涔熶笉瀹规槗褰卞搷鍒汉銆傝繖绉嶆ā寮忕伒娲诲浜嗭紝姣忎釜灏忓洟闃熻繕鑳芥牴鎹嚜宸辩殑鍠滃ソ閫夋渶濂界殑宸ュ叿骞叉椿锛屾洿鏂版崲浠e揩銆備笉杩囷紝杩欎箞澶氬皬鍥㈤槦锛屾�庝箞璁╁畠浠珮鏁堝悎浣滐紝涔熷緱濂藉ソ璁捐涓�濂楄鍒欍��
+
+## DUBBO
+
+璇翠簡杩欎箞澶氾紝鍏跺疄dubbo鐨勭簿楂撳氨鏄�**鎶婅嚜宸辩殑api鏆撮湶鍑哄幓缁欏ぇ瀹讹紝鍏蜂綋鐨勫疄鐜扮户鎵胯嚜宸辩殑api鍘诲啓瀹炵幇鏂规硶銆�**
+
+浣嗘槸feign灏卞彲浠ュ畬鍏ㄨ劚绂籥pi鎻愪緵锛屽彲浠ユ彁渚涗竴涓猺estful鐨刪ttp鎺ュ彛锛岀劧鍚庡叾浠栨湇鍔″彲浠ョ洿鎺ラ�氳繃feign杩涜璋冪敤锛岃繖涔熷鑷翠簡feign鐨勮�﹀悎搴︽洿浣庯紝浣嗘槸feign鍦ㄥ疄闄呭紑鍙戣繃绋嬩腑涔熷彲浠ユā浠縟ubbo鏆撮湶api鐨勬柟寮忚繘琛屾灦鏋勭殑鎼缓銆�
+
+涔嬪墠鎴戜滑蹇�熸紨绀轰竴涓嬩簡dubbo锛孾姣忓ぉ涓�涓柊鐭ヨ瘑涔� SpringBoot+Dubbo 鐨勫揩閫熷叆闂╙(https://blog.csdn.net/csdnerM/article/details/125410232)
+瑕佷娇鐢╠ubbo棣栧厛瑕佹惌寤轰竴涓敞鍐屼腑蹇冿紝娉ㄥ唽涓績鐨勭洰鐨勫氨鏄负浜嗚鍏朵粬鐨勬湇鍔¤皟鐢╠ubbo鏈嶅姟锛屽湪dubbo瀹樻柟锛屾帹鑽愪娇鐢╖ookeeper浣滀负娉ㄥ唽涓績銆�
+
+[鍏徃灞呯劧杩樺湪鐢▃ookeeper锛屽悡寰楁垜椹笂瀛︿範浜嗙浉鍏冲懡浠わ紒](https://juejin.cn/post/7376930488738938920)
+
+[Linux瀹夎Zookeeper锛堝浘鏂囪В璇磋缁嗙増锛塢(https://masiyi.blog.csdn.net/article/details/121848173)
 
 
 
+> ![鍦ㄨ繖閲屾彃鍏ュ浘鐗囨弿杩癩(img/a39c0b1e57d24af9aa49d129a81cbe69.jpeg#pic_center)
+
+
+
+
+
+铏界劧涔嬪墠涔熷啓杩囦竴绡嘾ubbo鐨勫揩閫熷叆闂紝浣嗘槸鍐欑殑绠�鍗曪紝鏃堕殧涓ゅ勾锛岃繖娆′粙缁嶄竴浜汥ubbo鐨勯珮绾х壒鎬с��
+
+## 妗嗘灦
+
+鎴戜滑鍏堜粠妗嗘灦鐨勬惌寤鸿璧�
+
+![image-20240615204929083](img/a0907aaaaa99e487ec892bab78e1efeb.png)
+
+杩欐鎴戜滑涓�鍏卞缓浜嗗洓涓崟鐙殑妯″潡锛屼粬浠病鏈夊叡鍚岀殑鐖舵ā鍧楋紝浣嗘槸浠栦滑涔嬮棿鏈変緷璧栧叧绯伙紝浠栦滑涔嬮棿鐨勫叧绯绘槸杩欐牱鐨勶細
+
+![image-20240615210608867](img/3f2a3f339c9e70dc7655883a6eff85cb.png)
+
+鍦╯ervice妯″潡涓紩鍏ヤ簡Dubbo鐨刯ar鍖咃紝杩欐牱锛屼竴濂楁暣浣撶殑dubbo妯″潡妗嗘灦灏卞嚭鏉ヤ簡
+
+```
+      <dependency>
+            <groupId>com.alibaba.boot</groupId>
+            <artifactId>dubbo-spring-boot-starter</artifactId>
+            <version>0.2.0</version>
+        </dependency>
+```
+
+浠栦滑鐨勪綔鐢ㄥ垎鍒槸锛�
+
+api妯″潡鎻愪緵鏈�鍩虹鐨勫疄浣撶被锛屾灇涓剧被绛夛紝鏈�閲嶈鏄渶瑕佹毚闇插嚭鍘荤殑鎶借薄鎺ュ彛銆�
+
+service鍐欏叿浣撶殑鎺ュ彛鐨勫疄鐜扮被锛屾彁渚涘叿浣撶殑瀹炵幇绫汇��
+
+rpc-server閲岄潰鏄竴涓惎鍔ㄧ被锛屽洜涓轰緷璧杝ervice妯″潡锛屽彲浠ョ悊瑙d负鐢熶骇鎻愪緵鑰呫��
+
+web-server鍒欐槸涓昏鎻愪緵http鎺ュ彛缁欑涓夋柟锛屽鍓嶇璋冪敤锛屼篃鍙互寮曞叆鍏朵粬椤圭洰鐨刟pi妯″潡锛屼箣鍚庡彧瑕佹湁鐢熶骇鑰呮敞鍏ュ埌娉ㄥ唽涓績灏卞彲浠ユ彁渚涙湇鍔′簡锛岀洿鎺ヨ皟鐢╝pi閲岄潰鐨勬娊璞℃帴鍙f柟娉曘��
+
+璇磋繖涔堝锛屾垜浠潵鐪嬮噷闈㈢殑鍏蜂綋瀹炵幇浠g爜锛岀敱浜庣瘒骞呴棶棰橈紝璇风Щ鑷充唬鐮佷粨搴撴煡鐪嬩唬鐮侊細
+
+[https://gitee.com/wangfugui-ma/springboot-dubbo/tree/dubbo/](https://gitee.com/wangfugui-ma/springboot-dubbo/tree/dubbo/)
+
+閭d箞锛宒ubbo鏄渶瑕佹惌閰峼ookeeper鍘讳娇鐢紝鐢变簬涓婁竴绡囨枃绔犲凡缁忚杩囦簡锛岃繖閲屽氨涓嶅啀璧樿堪銆傛垜浠�庝箞鍘讳娇鐢╠ubbo鐨勪竴浜涢珮绾х壒鎬у憿
+
+## 楂樼骇鐗规��
+
+### 搴忓垪鍖�
+
+鐢变簬鎴戜滑鐨勫疄浣撶被鏄啓鍦╝pi閲岄潰鐨勶紝鑰宎pi鍙堟槸渚涘悇涓」鐩幓寮曠敤鐨勶紝鎵�浠ュ鏋滄垜浠鍦ㄥ叾浠栫殑椤圭洰涓幏鍙栬繖涓被锛屼緥濡傚湪杩欎釜椤圭洰涓殑queryUser鏂规硶涓��
+
+```java
+package com.zy.controller;
+
+
+import com.alibaba.dubbo.config.annotation.Reference;
+import com.zy.entity.User;
+import com.zy.service.UserService;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+public class UserController {
+
+    @Reference//杩滅▼娉ㄥ叆
+    private UserService userService;
+
+
+    @GetMapping("/user")
+    public String user() {
+        User user = userService.queryUser();
+        return user.toString();
+    }
+}
+
+```
+
+鎴戜滑鐨刄ser瀵硅薄蹇呴』瀹炵幇Serializable鎺ュ彛锛屼緥濡傝繖鏍�
+
+```java
+package com.zy.entity;
+
+import java.io.Serializable;
+
+public class User implements Serializable {
+    private String name;
+    private Integer age;
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Integer getAge() {
+        return age;
+    }
+
+    public void setAge(Integer age) {
+        this.age = age;
+    }
+
+    @Override
+    public String toString() {
+        return "User{" +
+                "name='" + name + '\'' +
+                ", age=" + age +
+                '}';
+    }
+}
+
+```
+
+### 瓒呮椂
+
+#### 鐢熶骇鑰呰秴鏃�
+
+濡傛灉鎴戜滑鐨勭敓浜ц�呴渶瑕佽缃竴涓秴鏃舵椂闂达紝鎴戜滑鍙互鍦ㄦ彁渚涙柟鐨凷ervice娉ㄨВ涓姞鍏imeout灞炴�э紝灏卞儚杩欐牱锛�
+
+```java
+package com.zy.support;
+
+import com.alibaba.dubbo.config.annotation.Service;
+import com.zy.entity.User;
+import com.zy.service.UserService;
+import org.springframework.stereotype.Component;
+
+
+@Service(timeout = 3000)
+@Component
+public class UserServiceSupport implements UserService {
+
+    /**
+     * 鏌ヨuser
+     */
+    @Override
+    public User queryUser() {
+        try {
+            Thread.sleep(5000);
+        } catch (InterruptedException e) {
+            throw new RuntimeException(e);
+        }
+        User user = new User();
+        user.setAge(18);
+        user.setName("鐜嬪瘜璐�");
+        return user;
+    }
+}
+
+```
+
+杩欐牱褰撴垜浠殑controller鎺ュ彛璋冪敤瓒呰繃3绉掔殑鏃跺�欏氨浼氭姤閿欙細
+
+```
+com.alibaba.dubbo.remoting.TimeoutException: Waiting server-side response timeout. start time: 2024-06-15 21:24:14.504, end time: 2024-06-15 21:24:17.511, client elapsed: 1 ms, server elapsed: 3006 ms, timeout: 3000 ms, request: Request [id=2, version=2.0.0, twoway=true, event=false, broken=false, data=RpcInvocation [methodName=queryUser, parameterTypes=[], arguments=[], attachments={path=com.zy.service.UserService, interface=com.zy.service.UserService, version=0.0.0, timeout=3000}]], channel: /10.8.0.136:8061 -> /10.8.0.136:20885
+```
+
+杩欐牱鎴戜滑灏变粠鐢熶骇鏂瑰姞鍏ヤ簡瓒呮椂鎺у埗
+
+#### 娑堣垂鑰呰秴鏃�
+
+鍏跺疄鎴戜滑涔熷彲浠ヤ粠娑堣垂鑰呰繖杈规帶鍒惰秴鏃舵椂闂达紝灏卞儚杩欐牱锛�
+
+```
+package com.zy.controller;
+
+
+import com.alibaba.dubbo.config.annotation.Reference;
+import com.zy.entity.User;
+import com.zy.service.UserService;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+public class UserController {
+
+    @Reference(timeout = 1000)//杩滅▼娉ㄥ叆
+    private UserService userService;
+
+
+    @GetMapping("/user")
+    public String user() {
+        User user = userService.queryUser();
+        return user.toString();
+    }
+}
+
+```
+
+鍦≧eference娉ㄨВ涓姞鍏imeout灞炴�т篃鏄彲浠ヨ揪鍒颁竴鏍风殑鏁堟灉锛�
+
+```
+com.alibaba.dubbo.remoting.TimeoutException: Waiting server-side response timeout. start time: 2024-06-15 21:25:25.398, end time: 2024-06-15 21:25:26.399, client elapsed: 0 ms, server elapsed: 1001 ms, timeout: 1000 ms, request: Request [id=2, version=2.0.0, twoway=true, event=false, broken=false, data=RpcInvocation [methodName=queryUser, parameterTypes=[], arguments=[], attachments={path=com.zy.service.UserService, interface=com.zy.service.UserService, version=0.0.0, timeout=1000}]], channel: /10.8.0.136:8570 -> /10.8.0.136:20885
+```
+
+### @Autowired
+
+闄や簡浣跨敤@Reference娉ㄨВ娉ㄥ叆dubbo鏈嶅姟澶栵紝杩樺彲浠ヤ娇鐢ˊAutowired鍘绘敞鍏ubbo鏈嶅姟
+
+![image-20240625163448223](img/1d70a633d9eb9f22e02faaa4283216b4.png)
+
+### 閰嶇疆鏂囦欢
+
+```
+dubbo.application.name=web-server
+dubbo.registry.address=zookeeper://127.0.0.1:2181
+```
+
+鍦ㄩ厤缃枃浠朵腑鍐欎笂鏈�鍩虹鐨勪袱涓厤缃紝dubbo.registry.address鍙互涓嶅甫zookeeper鍓嶇紑锛屼絾鏄鍔犱釜閰嶇疆key
+
+```
+# 濡傛灉涓嶅姞杩欎釜锛屽氨闇�瑕佸湪address閲岄潰鍔爖ookeeper://
+dubbo.registry.protocol=zookeeper
+```
+
+娉ㄦ剰杩欎釜閰嶇疆锛�
+
+```
+dubbo.protocol.port=20885
+```
+
+dubbo榛樿鐢�20880绔彛锛屽鏋滀綘闇�瑕佸湪涓�涓湇鍔″櫒涓婇潰鍚姩澶氫釜dubbo鏈嶅姟锛岄偅灏变笉鑳借浠栦滑鐨勭鍙e啿绐�
+
+```
+dubbo.registry.password=zk_password
+dubbo.registry.username=zk_user
+```
+
+濡傛灉浣犵殑鑺傜偣鏈塧cl鏉冮檺锛屽垯鍙兘闇�瑕佸姞涓婅繖涓や釜閰嶇疆锛屾浛鎹alue
+
+濡傛灉浣犺繕涓嶇煡閬揳cl鏉冮檺鏄粈涔堬紝鎺ㄨ崘浣犵湅涓�涓嬭繖绡囨枃绔�
+
+[鍏徃灞呯劧杩樺湪鐢▃ookeeper锛屽悡寰楁垜椹笂瀛︿範浜嗙浉鍏冲懡浠わ紒](https://juejin.cn/post/7376930488738938920)
+
+### @EnableDubbo
+
+璁板緱鍦ㄥ惎鍔ㄧ被寮�鍚繖涓敞瑙o紝鍚﹀垯涓嶈兘浣跨敤dubbo鐨勭浉鍏虫湇鍔★紝浣犳噦鐨勩�傘�傘�傘��
+
+> ![鍦ㄨ繖閲屾彃鍏ュ浘鐗囨弿杩癩(img/31dc8042deb97d9fdd67c146bd3fac11.png)
+

--
Gitblit v1.9.1