From 5186bf6f2a786775818dc7017ef0bde32cc19201 Mon Sep 17 00:00:00 2001 From: zhang <zc857179121@qq.com> Date: 星期三, 02 七月 2025 15:42:18 +0800 Subject: [PATCH] 1 --- .idea/jarRepositories.xml | 20 + web-server/target/classes/application.yml | 19 + api/src/main/java/com/zy/entity/User.java | 35 - .idea/encodings.xml | 11 web-server/src/main/java/com/zy/controller/UserController.java | 22 + service/src/main/resources/mapper/system/UserMapper.xml | 6 api/pom.xml | 75 +++++ .idea/misc.xml | 16 + README.md | 266 ----------------- rpc-server/src/main/resources/application.yml | 84 +++++ service/pom.xml | 84 ++--- /dev/null | 12 .idea/vcs.xml | 6 .idea/modules.xml | 8 service/src/main/java/com/zy/mapper/UserMapper.java | 13 api/src/main/java/com/zy/service/UserService.java | 8 web-server/src/main/resources/application.yml | 19 + .idea/compiler.xml | 23 + rpc-server/target/classes/application.yml | 84 +++++ service/src/main/java/com/zy/support/UserServiceSupport.java | 37 ++ service/target/classes/mapper/system/UserMapper.xml | 6 .idea/algo-java.iml | 9 web-server/pom.xml | 2 23 files changed, 512 insertions(+), 353 deletions(-) diff --git a/.idea/algo-java.iml b/.idea/algo-java.iml new file mode 100644 index 0000000..d6ebd48 --- /dev/null +++ b/.idea/algo-java.iml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<module type="JAVA_MODULE" version="4"> + <component name="NewModuleRootManager" inherit-compiler-output="true"> + <exclude-output /> + <content url="file://$MODULE_DIR$" /> + <orderEntry type="inheritedJdk" /> + <orderEntry type="sourceFolder" forTests="false" /> + </component> +</module> \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..c576034 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="CompilerConfiguration"> + <annotationProcessing> + <profile default="true" name="Default" enabled="true" /> + <profile name="Maven default annotation processors profile" enabled="true"> + <sourceOutputDir name="target/generated-sources/annotations" /> + <sourceTestOutputDir name="target/generated-test-sources/test-annotations" /> + <outputRelativeToContentRoot value="true" /> + <module name="rpc-server" /> + <module name="api" /> + <module name="web-server" /> + <module name="service" /> + </profile> + </annotationProcessing> + </component> + <component name="JavacSettings"> + <option name="ADDITIONAL_OPTIONS_OVERRIDE"> + <module name="rpc-server" options="-parameters" /> + <module name="web-server" options="-parameters" /> + </option> + </component> +</project> \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..02d2943 --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="Encoding"> + <file url="file://$PROJECT_DIR$/api/src/main/java" charset="UTF-8" /> + <file url="file://$PROJECT_DIR$/api/src/main/resources" charset="UTF-8" /> + <file url="file://$PROJECT_DIR$/rpc-server/src/main/java" charset="UTF-8" /> + <file url="file://$PROJECT_DIR$/service/src/main/java" charset="UTF-8" /> + <file url="file://$PROJECT_DIR$/service/src/main/resources" charset="UTF-8" /> + <file url="file://$PROJECT_DIR$/web-server/src/main/java" charset="UTF-8" /> + </component> +</project> \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..e6b00eb --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="RemoteRepositoriesConfiguration"> + <remote-repository> + <option name="id" value="central" /> + <option name="name" value="Maven Central repository" /> + <option name="url" value="https://repo1.maven.org/maven2" /> + </remote-repository> + <remote-repository> + <option name="id" value="central" /> + <option name="name" value="Central Repository" /> + <option name="url" value="http://maven.aliyun.com/nexus/content/groups/public" /> + </remote-repository> + <remote-repository> + <option name="id" value="jboss.community" /> + <option name="name" value="JBoss Community repository" /> + <option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" /> + </remote-repository> + </component> +</project> \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 90dee70..0ef30f9 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,18 @@ <?xml version="1.0" encoding="UTF-8"?> <project version="4"> - <component name="KubernetesApiProvider">{}</component> + <component name="ExternalStorageConfigurationManager" enabled="true" /> + <component name="KubernetesApiProvider"><![CDATA[{}]]></component> + <component name="MavenProjectsManager"> + <option name="originalFiles"> + <list> + <option value="$PROJECT_DIR$/rpc-server/pom.xml" /> + <option value="$PROJECT_DIR$/service/pom.xml" /> + <option value="$PROJECT_DIR$/web-server/pom.xml" /> + <option value="$PROJECT_DIR$/api/pom.xml" /> + </list> + </option> + </component> + <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK"> + <output url="file://$PROJECT_DIR$/out" /> + </component> </project> \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..602cff2 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="ProjectModuleManager"> + <modules> + <module fileurl="file://$PROJECT_DIR$/.idea/algo-java.iml" filepath="$PROJECT_DIR$/.idea/algo-java.iml" /> + </modules> + </component> +</project> \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="VcsDirectoryMappings"> + <mapping directory="" vcs="Git" /> + </component> +</project> \ No newline at end of file diff --git a/README.md b/README.md index ec4243d..ff19738 100644 --- a/README.md +++ b/README.md @@ -1,64 +1,7 @@ ## 浠嬬粛 -Dubbo鏄竴娆鹃珮鎬ц兘銆佽交閲忕骇鐨勫紑婧怞ava RPC锛圧emote Procedure -Call锛岃繙绋嬭繃绋嬭皟鐢級妗嗘灦锛屽畠鎻愪緵浜嗗垎甯冨紡绯荤粺涓湇鍔′箣闂寸殑楂樻晥銆侀�忔槑鍖栫殑鏈嶅姟璋冪敤鏂规銆侱ubbo鏈�鍒濈敱闃块噷宸村反鍏徃寮�鍙戝苟寮�婧愶紝鐜板凡鎴愪负Apache椤剁骇椤圭洰銆� - -## 鏋舵瀯婕斿彉 - -鍦ㄤ簡瑙ubbo涔嬪悗锛屾垜浠鐭ラ亾dubbo鍦ㄥ綋浠婁簰鑱旂綉鏋舵瀯涓湪浠�涔堟牱鐨勪綅缃紝鎴戜滑鍏堟潵鐪嬩竴涓灦鏋勬紨杩涘浘 - - - -鑰屼簡瑙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) - - - ->  - -杩欐鎴戜滑涓�鍏卞缓浜嗗洓涓崟鐙殑妯″潡锛屼粬浠病鏈夊叡鍚岀殑鐖舵ā鍧楋紝浣嗘槸浠栦滑涔嬮棿鏈変緷璧栧叧绯伙紝浠栦滑涔嬮棿鐨勫叧绯绘槸杩欐牱鐨勶細 - - - -鍦╯ervice妯″潡涓紩鍏ヤ簡Dubbo鐨刯ar鍖咃紝杩欐牱锛屼竴濂楁暣浣撶殑dubbo妯″潡妗嗘灦灏卞嚭鏉ヤ簡 - -``` - <dependency> - <groupId>com.alibaba.boot</groupId> - <artifactId>dubbo-spring-boot-starter</artifactId> - <version>0.2.0</version> - </dependency> -``` - -浠栦滑鐨勪綔鐢ㄥ垎鍒槸锛� +鏈」鐩妧鏈珯锛� +jdk8 + springboot + dubbo + mysql + redis + zookeeper api妯″潡鎻愪緵鏈�鍩虹鐨勫疄浣撶被锛屾灇涓剧被绛夛紝鏈�閲嶈鏄渶瑕佹毚闇插嚭鍘荤殑鎶借薄鎺ュ彛銆� @@ -68,206 +11,9 @@ web-server鍒欐槸涓昏鎻愪緵http鎺ュ彛缁欑涓夋柟锛屽鍓嶇璋冪敤锛屼篃鍙互寮曞叆鍏朵粬椤圭洰鐨刟pi妯″潡锛屼箣鍚庡彧瑕佹湁鐢熶骇鑰呮敞鍏ュ埌娉ㄥ唽涓績灏卞彲浠ユ彁渚涙湇鍔′簡锛岀洿鎺ヨ皟鐢╝pi閲岄潰鐨勬娊璞℃帴鍙f柟娉曘�� -璇磋繖涔堝锛屾垜浠潵鐪嬮噷闈㈢殑鍏蜂綋瀹炵幇浠g爜锛岀敱浜庣瘒骞呴棶棰橈紝璇风Щ鑷充唬鐮佷粨搴撴煡鐪嬩唬鐮侊細 +涓澶х殑鑰佸笀锛岃礋璐e啀service妯″潡閲屽啓绠楁硶鍗冲彲 -[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鏈嶅姟 - - - -### 閰嶇疆鏂囦欢 - -``` -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) - +1.service宸茬粡闆嗘垚浜唕edis鍜宮ysql涔熼兘鏈夌ず渚� +2.api妯″潡閲屽彧瑕佸啓鎺ュ彛锛屼緵绗笁鏂圭郴缁熶娇鐢� +3. \ No newline at end of file diff --git a/api/pom.xml b/api/pom.xml index eebfcd9..cbc555c 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -12,6 +12,81 @@ <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <dubbo.version>2.7.8</dubbo.version> + <curator.version>4.2.0</curator.version> + <curator-recipes.version>2.8.0</curator-recipes.version> + <zookeeper.version>3.6.3</zookeeper.version> </properties> + + <dependencies> + + <!-- Dubbo Spring Boot Starter --> + <dependency> + <groupId>org.apache.dubbo</groupId> + <artifactId>dubbo-spring-boot-starter</artifactId> + <version>2.7.8</version> + </dependency> + + + <!-- Dubbo Spring Boot Starter --> + <dependency> + <groupId>org.apache.dubbo</groupId> + <artifactId>dubbo-spring-boot-starter</artifactId> + <version>${dubbo.version}</version> + + </dependency> + + <!-- zookeeper娉ㄥ唽涓績 闇�瑕佸鍏ookeeper渚濊禆 --> + <dependency> + <groupId>org.apache.zookeeper</groupId> + <artifactId>zookeeper</artifactId> + <version>${zookeeper.version}</version> + <!-- 鎻愮ず涓巣ookeeper涓殑slf4j-log4j12-1.7.29.jar 鍖呭啿绐�--> + <!--鎺掗櫎杩欎釜slf4j-log4j12--> + <exclusions> + <exclusion> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-log4j12</artifactId> + </exclusion> + <exclusion> + <groupId>log4j</groupId> + <artifactId>log4j</artifactId> + </exclusion> + </exclusions> + </dependency> + + <!-- Zookeeper 瀹㈡埛绔� --> + <dependency> + <groupId>org.apache.curator</groupId> + <artifactId>curator-framework</artifactId> + <version>${curator.version}</version> + </dependency> + <dependency> + <groupId>org.apache.curator</groupId> + <artifactId>curator-recipes</artifactId> + <version>${curator-recipes.version}</version> + </dependency> + + <!-- mybatis-plus --> + <dependency> + <groupId>com.baomidou</groupId> + <artifactId>mybatis-plus</artifactId> + <version>3.5.12</version> + </dependency> + <dependency> + <groupId>com.baomidou</groupId> + <artifactId>mybatis-plus-generator</artifactId> + <version>3.4.1</version> + </dependency> + <dependency> + <groupId>org.projectlombok</groupId> + <artifactId>lombok</artifactId> + <version>1.18.20</version> + <scope>provided</scope> + </dependency> + + </dependencies> + + </project> \ No newline at end of file diff --git a/api/src/main/java/com/zy/entity/User.java b/api/src/main/java/com/zy/entity/User.java index 28b81a0..21a56b8 100644 --- a/api/src/main/java/com/zy/entity/User.java +++ b/api/src/main/java/com/zy/entity/User.java @@ -1,32 +1,25 @@ package com.zy.entity; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + import java.io.Serializable; +@Data +@TableName("sys_user") public class User implements Serializable { - private String name; - private Integer age; - public String getName() { - return name; - } + private String username; - public void setName(String name) { - this.name = name; - } + /** + * 瀵嗙爜 + */ + private String password; - public Integer getAge() { - return age; - } + /** + * 鏄电О + */ + private String nickname; - public void setAge(Integer age) { - this.age = age; - } - @Override - public String toString() { - return "User{" + - "name='" + name + '\'' + - ", age=" + age + - '}'; - } } diff --git a/api/src/main/java/com/zy/service/UserService.java b/api/src/main/java/com/zy/service/UserService.java index 1bccfc8..500766b 100644 --- a/api/src/main/java/com/zy/service/UserService.java +++ b/api/src/main/java/com/zy/service/UserService.java @@ -2,6 +2,8 @@ import com.zy.entity.User; +import java.util.List; + //todo 杩欓噷鍐欎竴涓嚜瀹氫箟娉ㄨВ锛屼箣鍚庨�氳繃鑷畾涔夋敞瑙f潵鑾峰彇璇ユ帴鍙e拰瀹炵幇绫诲皢鍏舵敞鍐屽埌娉ㄥ唽涓績 public interface UserService { @@ -9,4 +11,10 @@ * 鏌ヨuser */ public User queryUser(); + + void add(String key, String value); + + String get(String key); + + List<User> getDataByMySql(); } diff --git a/rpc-server/src/main/resources/application.properties b/rpc-server/src/main/resources/application.properties deleted file mode 100644 index 34c3e6c..0000000 --- a/rpc-server/src/main/resources/application.properties +++ /dev/null @@ -1,14 +0,0 @@ -# ???? -spring.application.name=rpc-server -server.port=8082 -dubbo.application.name=rpc-server -dubbo.registry.address=zookeeper://127.0.0.1:2181 -#dubbo.registry.protocol=zookeeper -#dubbo.registry.password=dreamtech -#dubbo.registry.username=zk_user -dubbo.protocol.name=dubbo -dubbo.protocol.port=20880 -dubbo.monitor.protocol=registry - - - diff --git a/rpc-server/src/main/resources/application.yml b/rpc-server/src/main/resources/application.yml new file mode 100644 index 0000000..cdbb7d8 --- /dev/null +++ b/rpc-server/src/main/resources/application.yml @@ -0,0 +1,84 @@ +spring: + application: + name: rpc-server + mvc: + static-path-pattern: /** + datasource: + driver-class-name: com.mysql.jdbc.Driver + url: jdbc:mysql://localhost:3306/jbly?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai + username: root + password: xltys1995 + type: com.alibaba.druid.pool.DruidDataSource + druid: + initial-size: 5 + min-idle: 5 + max-active: 20 + max-wait: 30000 + time-between-eviction-runs-millis: 60000 + min-evictable-idle-time-millis: 300000 + test-while-idle: true + test-on-borrow: true + test-on-return: false + remove-abandoned: true + remove-abandoned-timeout: 1800 + #pool-prepared-statements: false + #max-pool-prepared-statement-per-connection-size: 20 + filters: stat, wall + validation-query: SELECT 'x' + aop-patterns: com.zy.*.*.service.* + stat-view-servlet: + url-pattern: /druid/* + reset-enable: true + login-username: admin + login-password: admin + enabled: true + servlet: + multipart: + maxFileSize: 100MB + maxRequestSize: 100MB + jmx: + enabled: false + + redis: + host: localhost + password: xltys1995 + port: 6379 + max: 30 + min: 10 + timeout: 5000 + index: 3 + + + +server: + port: 8082 + +dubbo: + application: + name: rpc-server + registry: + address: zookeeper://127.0.0.1:2181 + # protocol: zookeeper + # password: dreamtech + # username: zk_user + protocol: + name: dubbo + port: 20880 + monitor: + protocol: registry + + +mybatis-plus: + mapper-locations: classpath:mapper/*/*.xml + # global-config: + # field-strategy: 0 + configuration: + # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + map-underscore-to-camel-case: true + cache-enabled: true + global-config: + :banner: false + db-config: + id-type: auto + logic-delete-value: 1 + logic-not-delete-value: 0 \ No newline at end of file diff --git a/rpc-server/target/classes/application.properties b/rpc-server/target/classes/application.properties deleted file mode 100644 index fe44e2c..0000000 --- a/rpc-server/target/classes/application.properties +++ /dev/null @@ -1,18 +0,0 @@ -# ???? -spring.application.name=rpc-server - -server.port=8082 - -dubbo.application.name=rpc-server -dubbo.registry.address=zookeeper://127.0.0.1:2181 -#dubbo.registry.protocol=zookeeper -#dubbo.registry.password=dreamtech -#dubbo.registry.username=zk_user - -dubbo.protocol.name=dubbo -dubbo.protocol.port=20880 - -dubbo.monitor.protocol=registry - - - diff --git a/rpc-server/target/classes/application.yml b/rpc-server/target/classes/application.yml new file mode 100644 index 0000000..cdbb7d8 --- /dev/null +++ b/rpc-server/target/classes/application.yml @@ -0,0 +1,84 @@ +spring: + application: + name: rpc-server + mvc: + static-path-pattern: /** + datasource: + driver-class-name: com.mysql.jdbc.Driver + url: jdbc:mysql://localhost:3306/jbly?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai + username: root + password: xltys1995 + type: com.alibaba.druid.pool.DruidDataSource + druid: + initial-size: 5 + min-idle: 5 + max-active: 20 + max-wait: 30000 + time-between-eviction-runs-millis: 60000 + min-evictable-idle-time-millis: 300000 + test-while-idle: true + test-on-borrow: true + test-on-return: false + remove-abandoned: true + remove-abandoned-timeout: 1800 + #pool-prepared-statements: false + #max-pool-prepared-statement-per-connection-size: 20 + filters: stat, wall + validation-query: SELECT 'x' + aop-patterns: com.zy.*.*.service.* + stat-view-servlet: + url-pattern: /druid/* + reset-enable: true + login-username: admin + login-password: admin + enabled: true + servlet: + multipart: + maxFileSize: 100MB + maxRequestSize: 100MB + jmx: + enabled: false + + redis: + host: localhost + password: xltys1995 + port: 6379 + max: 30 + min: 10 + timeout: 5000 + index: 3 + + + +server: + port: 8082 + +dubbo: + application: + name: rpc-server + registry: + address: zookeeper://127.0.0.1:2181 + # protocol: zookeeper + # password: dreamtech + # username: zk_user + protocol: + name: dubbo + port: 20880 + monitor: + protocol: registry + + +mybatis-plus: + mapper-locations: classpath:mapper/*/*.xml + # global-config: + # field-strategy: 0 + configuration: + # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + map-underscore-to-camel-case: true + cache-enabled: true + global-config: + :banner: false + db-config: + id-type: auto + logic-delete-value: 1 + logic-not-delete-value: 0 \ No newline at end of file diff --git a/service/pom.xml b/service/pom.xml index a2c3ba0..c00155f 100644 --- a/service/pom.xml +++ b/service/pom.xml @@ -12,65 +12,49 @@ <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> - <dubbo.version>2.7.8</dubbo.version> - <curator.version>4.2.0</curator.version> - <curator-recipes.version>2.8.0</curator-recipes.version> - <zookeeper.version>3.6.3</zookeeper.version> + </properties> <dependencies> - <!-- Dubbo Spring Boot Starter --> - <dependency> - <groupId>org.apache.dubbo</groupId> - <artifactId>dubbo-spring-boot-starter</artifactId> - <version>2.7.8</version> - </dependency> - - - <!-- Dubbo Spring Boot Starter --> - <dependency> - <groupId>org.apache.dubbo</groupId> - <artifactId>dubbo-spring-boot-starter</artifactId> - <version>${dubbo.version}</version> - - </dependency> - - <!-- zookeeper娉ㄥ唽涓績 闇�瑕佸鍏ookeeper渚濊禆 --> - <dependency> - <groupId>org.apache.zookeeper</groupId> - <artifactId>zookeeper</artifactId> - <version>${zookeeper.version}</version> - <!-- 鎻愮ず涓巣ookeeper涓殑slf4j-log4j12-1.7.29.jar 鍖呭啿绐�--> - <!--鎺掗櫎杩欎釜slf4j-log4j12--> - <exclusions> - <exclusion> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-log4j12</artifactId> - </exclusion> - <exclusion> - <groupId>log4j</groupId> - <artifactId>log4j</artifactId> - </exclusion> - </exclusions> - </dependency> - - <!-- Zookeeper 瀹㈡埛绔� --> - <dependency> - <groupId>org.apache.curator</groupId> - <artifactId>curator-framework</artifactId> - <version>${curator.version}</version> - </dependency> - <dependency> - <groupId>org.apache.curator</groupId> - <artifactId>curator-recipes</artifactId> - <version>${curator-recipes.version}</version> - </dependency> <dependency> <groupId>com.zy</groupId> <artifactId>api</artifactId> <version>1.0-SNAPSHOT</version> </dependency> + + <!-- 闆嗘垚redis渚濊禆 --> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-data-redis</artifactId> + <version>2.0.3.RELEASE</version> + </dependency> + + <!-- mybatis-plus --> + <dependency> + <groupId>com.baomidou</groupId> + <artifactId>mybatis-plus-boot-starter</artifactId> + <version>3.4.1</version> + </dependency> + <dependency> + <groupId>com.baomidou</groupId> + <artifactId>mybatis-plus-generator</artifactId> + <version>3.4.1</version> + </dependency> + + <dependency> + <groupId>mysql</groupId> + <artifactId>mysql-connector-java</artifactId> + <version>5.1.47</version> + </dependency> + + <!-- druid --> + <dependency> + <groupId>com.alibaba</groupId> + <artifactId>druid-spring-boot-starter</artifactId> + <version>1.2.6</version> + </dependency> + </dependencies> </project> \ No newline at end of file diff --git a/service/src/main/java/com/zy/mapper/UserMapper.java b/service/src/main/java/com/zy/mapper/UserMapper.java new file mode 100644 index 0000000..fb1b1e1 --- /dev/null +++ b/service/src/main/java/com/zy/mapper/UserMapper.java @@ -0,0 +1,13 @@ +package com.zy.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zy.entity.User; +import org.apache.ibatis.annotations.Mapper; +import org.springframework.stereotype.Repository; + +@Mapper +@Repository +public interface UserMapper extends BaseMapper<User> { + + +} diff --git a/service/src/main/java/com/zy/support/UserServiceSupport.java b/service/src/main/java/com/zy/support/UserServiceSupport.java index cff6b50..32d245c 100644 --- a/service/src/main/java/com/zy/support/UserServiceSupport.java +++ b/service/src/main/java/com/zy/support/UserServiceSupport.java @@ -1,26 +1,49 @@ package com.zy.support; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.zy.entity.User; +import com.zy.mapper.UserMapper; import com.zy.service.UserService; import org.apache.dubbo.config.annotation.DubboService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; + +import java.util.List; @DubboService // 璇ユ敞瑙g敤浜庡皢褰撳墠绫诲璞″瓨鍏pring瀹瑰櫒涓�,鏃㈠彲浠ユ湰椤圭洰鏈嶅姟浣跨敤锛岀埗鎺ュ彛娉ㄨВ鑳藉姏涔熷彲浠ユ彁渚涚粰鍏朵粬椤圭洰浣跨敤 public class UserServiceSupport implements UserService { + + @Autowired + private RedisTemplate<String, String> redisTemplate; + + @Autowired + private UserMapper userMapper; /** * 鏌ヨ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("寮犱笁"); + user.setNickname("1212"); + user.setUsername("寮犱笁"); return user; } + + @Override + public void add(String key, String value) { + redisTemplate.opsForValue().set(key, value); + } + + @Override + public String get(String key) { + return redisTemplate.opsForValue().get(key); + } + + @Override + public List<User> getDataByMySql() { + List<User> users = userMapper.selectList(new QueryWrapper<>()); + return users; + } } diff --git a/service/src/main/resources/mapper/system/UserMapper.xml b/service/src/main/resources/mapper/system/UserMapper.xml new file mode 100644 index 0000000..b3487e0 --- /dev/null +++ b/service/src/main/resources/mapper/system/UserMapper.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.zy.mapper.UserMapper"> + + +</mapper> diff --git a/service/target/classes/mapper/system/UserMapper.xml b/service/target/classes/mapper/system/UserMapper.xml new file mode 100644 index 0000000..b3487e0 --- /dev/null +++ b/service/target/classes/mapper/system/UserMapper.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.zy.mapper.UserMapper"> + + +</mapper> diff --git a/web-server/pom.xml b/web-server/pom.xml index 28ee17b..d96a396 100644 --- a/web-server/pom.xml +++ b/web-server/pom.xml @@ -33,7 +33,7 @@ <dependency> <groupId>com.zy</groupId> - <artifactId>service</artifactId> + <artifactId>api</artifactId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies> diff --git a/web-server/src/main/java/com/zy/controller/UserController.java b/web-server/src/main/java/com/zy/controller/UserController.java index 7520664..2dc8ec2 100644 --- a/web-server/src/main/java/com/zy/controller/UserController.java +++ b/web-server/src/main/java/com/zy/controller/UserController.java @@ -5,12 +5,15 @@ import com.zy.service.UserService; import org.apache.dubbo.config.annotation.DubboReference; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; + +import java.util.List; @RestController public class UserController { - @DubboReference(timeout = 1000)//杩滅▼娉ㄥ叆 + @DubboReference(timeout = 1000, check = false)//杩滅▼娉ㄥ叆 private UserService userService; @@ -19,4 +22,21 @@ User user = userService.queryUser(); return user.toString(); } + + @GetMapping("/get") + public String get() { + return userService.get("user"); + } + + @GetMapping("/add") + public String add() { + userService.add("user", "123"); + return "ok"; + } + + @GetMapping("/user3") + public List<User> user3() { + return userService.getDataByMySql(); + + } } diff --git a/web-server/src/main/resources/application.properties b/web-server/src/main/resources/application.properties deleted file mode 100644 index c700ece..0000000 --- a/web-server/src/main/resources/application.properties +++ /dev/null @@ -1,12 +0,0 @@ -# ???? -spring.application.name=web-server -# ???? WEB ???? -server.port=8083 -dubbo.protocol.name=dubbo -dubbo.application.name=web-server -dubbo.registry.address=zookeeper://127.0.0.1:2181 -#dubbo.registry.password=dreamtech -#dubbo.registry.username=zk_user -dubbo.monitor.protocol=registry -dubbo.protocol.port=20885 - diff --git a/web-server/src/main/resources/application.yml b/web-server/src/main/resources/application.yml new file mode 100644 index 0000000..d236a08 --- /dev/null +++ b/web-server/src/main/resources/application.yml @@ -0,0 +1,19 @@ +spring: + application: + name: web-server + +server: + port: 8083 + +dubbo: + protocol: + name: dubbo + port: 20885 + application: + name: web-server + registry: + address: zookeeper://127.0.0.1:2181 + # password: dreamtech + # username: zk_user + monitor: + protocol: registry \ No newline at end of file diff --git a/web-server/target/classes/application.yml b/web-server/target/classes/application.yml new file mode 100644 index 0000000..d236a08 --- /dev/null +++ b/web-server/target/classes/application.yml @@ -0,0 +1,19 @@ +spring: + application: + name: web-server + +server: + port: 8083 + +dubbo: + protocol: + name: dubbo + port: 20885 + application: + name: web-server + registry: + address: zookeeper://127.0.0.1:2181 + # password: dreamtech + # username: zk_user + monitor: + protocol: registry \ No newline at end of file -- Gitblit v1.9.1