คำนำ
ด้วยการพัฒนาอินเทอร์เน็ตขนาดของแอปพลิเคชันเว็บไซต์ได้รับการขยายอย่างต่อเนื่องและสถาปัตยกรรมแอปพลิเคชันแนวตั้งแบบดั้งเดิมไม่สามารถรับมือกับมันได้อีกต่อไป สถาปัตยกรรมบริการแบบกระจายและสถาปัตยกรรมคอมพิวเตอร์มือถือมีความจำเป็น Dubbo เป็นกรอบการบริการแบบกระจายซึ่งเกิดในกรณีนี้ ตอนนี้ธุรกิจหลักได้รับการสกัดเป็นบริการอิสระเพื่อให้แอปพลิเคชันส่วนหน้าสามารถตอบสนองได้เร็วขึ้นและเสถียรมากขึ้น
Dubbo คืออะไร
Dubbo เป็นเฟรมเวิร์กบริการกระจายโอเพ่นซอร์สของอาลีบาบา คุณลักษณะที่ใหญ่ที่สุดคือมันมีโครงสร้างในรูปแบบเลเยอร์ วิธีนี้สามารถแยก (หรือเพิ่มการมีเพศสัมพันธ์ที่หลวม) ระหว่างเลเยอร์ จากมุมมองของรูปแบบการบริการ Dubbo ใช้โมเดลที่ง่ายมากไม่ว่าจะให้บริการหรือผู้บริโภคใช้บริการ ดังนั้นจากจุดนี้เราสามารถนามธรรมทั้งสองบทบาทของผู้ให้บริการและผู้บริโภคบริการ เกี่ยวกับศูนย์ลงทะเบียนการสนับสนุนข้อตกลงการตรวจสอบบริการและเนื้อหาอื่น ๆ
Dubbo ทำอะไรได้บ้าง
เมื่อเว็บไซต์มีขนาดใหญ่ขึ้นเป็นสิ่งที่หลีกเลี่ยงไม่ได้ที่แอปพลิเคชันจะถูกแยกและให้บริการ (Microservices) จะต้องปรับปรุงประสิทธิภาพการพัฒนาเพิ่มประสิทธิภาพประสิทธิภาพประหยัดทรัพยากรการแข่งขันที่สำคัญ ฯลฯ
ในฐานะที่เป็นบริการที่มากขึ้นเรื่อย ๆ ข้อมูลที่อยู่ URL ของบริการจะระเบิดการจัดการการกำหนดค่ากลายเป็นเรื่องยากมากและความกดดันจุดเดียวของ F5 ฮาร์ดแวร์โหลดบัลแลนเซอร์นั้นยิ่งใหญ่ขึ้นเรื่อย ๆ
เมื่อการพัฒนาเพิ่มเติมการพึ่งพาระหว่างการให้บริการมีความซับซ้อนและไม่สามารถบอกได้ว่าแอปพลิเคชันใดที่เริ่มต้นก่อนที่แอปพลิเคชันใดสถาปนิกไม่สามารถอธิบายความสัมพันธ์ทางสถาปัตยกรรมของแอปพลิเคชันได้อย่างเต็มที่
จากนั้นจำนวนการโทรของบริการจะมีขนาดใหญ่ขึ้นเรื่อย ๆ และปัญหาความสามารถในการให้บริการจะถูกเปิดเผย บริการนี้ต้องการการสนับสนุนเครื่องมากแค่ไหน? ฉันควรเพิ่มเครื่องเมื่อใด ฯลฯ ……
เมื่อพบปัญหาเหล่านี้คุณสามารถใช้ Dubbo เพื่อแก้ปัญหาได้
สิ่งที่ฉันแบ่งปันกับคุณในครั้งนี้คือการกำหนดค่าเริ่มต้นของแอปพลิเคชัน Dubbo Framework และการใช้ศูนย์ทะเบียน Zookeeper เมื่อพูดถึงศูนย์ลงทะเบียนมีเพียงสองประเภทของสิ่งที่ฉันใช้: Zookeeper และ Eureka ฉันใช้ ZK กับ Dubbo และ Eureka กับ SpringCloud ดังนั้นฉันจะแบ่งปันบางบทเกี่ยวกับ microservices กับคุณในภายหลังโดยหวังว่ามันจะเป็นประโยชน์กับคุณ
ติดตั้ง Zookeeper ศูนย์ทะเบียน
ผู้ให้บริการและผู้บริโภค Dubbo Framework
การปรับใช้ Dubbo-Admin
ติดตั้ง Zookeeper ศูนย์ทะเบียน
ก่อนอื่นเราต้องค้นหาที่อยู่ดาวน์โหลด ZooKeeper ออนไลน์ ฉันอยู่ในระบบ Linux ดังนั้นเราจึงดาวน์โหลดแพ็คเกจ ZooKeeper-3.3.6.tar.gz และคลายซิปผ่าน TAR -ZXVF ZooKeeper-3.3.6.tar.gz ควรสังเกตว่าไฟล์การกำหนดค่าในแพ็คเกจทั่วไปเป็นรุ่นตัวอย่างเริ่มต้นและชื่อไฟล์การกำหนดค่าเริ่มต้นของ Zookeeper เป็น zoo.cfg เท่านั้น เพื่อไม่ให้ระบุชื่อไฟล์ทุกครั้งเราจำเป็นต้องสร้างไฟล์กำหนดค่าชื่อ zoo.cfg ในไดเรกทอรี COF เนื้อหาไฟล์สามารถคัดลอกได้จาก zoo_sample.cfg หรือเปลี่ยนชื่อไฟล์ เนื้อหามีดังนี้ vim zoo.cfg:
# จำนวนล้านวินาทีของแต่ละ tickticktime = 2000 #HeartBeat ความถี่ # จำนวนเห็บที่ขั้นตอนการซิงโครไนซ์ # เริ่มต้นสามารถใช้งานได้ = 10 # การเชื่อมต่อ #Rrestrict # จำนวนเห็บที่สามารถส่งผ่าน # การส่งคำขอ ที่ไคลเอนต์จะเชื่อมต่อพอร์ต = 2081 #ZOOKeeper พอร์ตภายนอก
ฉันจะไม่แก้ไขข้อมูลพารามิเตอร์ที่นี่และใช้ค่าเริ่มต้น แนะนำคำสั่งที่ใช้กันทั่วไปหลายประการเกี่ยวกับวิธีแก้ไขเนื้อหาไฟล์ใน Linux:
vim zoo.cfg: ดูเนื้อหาไฟล์
แทรก: เรียกใช้คำสั่งแทรก
ESC: ยกเลิกคำสั่งจากนั้นกด: Q: ออก,: WQ: บันทึกและออก
เมื่อเรามี zoo.cfg เราจะต้องป้อนไดเรกทอรีถังขยะเพื่อค้นหาไฟล์ zkserver.sh และเริ่มศูนย์ลงทะเบียน Zookeeper โดยดำเนินการคำสั่ง./zkserver.sh Start พรอมต์เริ่มต้นปกติมีดังนี้:
โดยปกติแล้ว Zookeeper จะอยู่บนเซิร์ฟเวอร์แยกต่างหากเป็นศูนย์ลงทะเบียนและโปรแกรม (หมายถึงท้องถิ่นของฉัน) จำเป็นต้องโทรไปที่ศูนย์การลงทะเบียนแห่งอื่น นอกจากนี้ศูนย์การลงทะเบียนจำเป็นต้องตรวจสอบว่าสามารถเชื่อมต่อพอร์ต Open Port of Zookeeper ได้หรือไม่ ท้องถิ่นของฉันคือ Windows 10 ดังนั้นคุณไม่จำเป็นต้องตรวจสอบพอร์ตผ่านไคลเอนต์ Zookeeper คุณจะต้องใช้ Telnet IP 2081 เพื่อตรวจสอบว่าพอร์ตเปิดอยู่หรือไม่
ผู้ให้บริการและผู้บริโภค Dubbo Framework
ก่อนอื่นเพื่อความสะดวกเราจำเป็นต้องกำหนดอินเทอร์เฟซแบบครบวงจรซึ่งเป็นส่วนต่อประสานสาธารณะที่สกัดโดยธุรกิจ เราจัดทำอินเทอร์เฟซนี้แยกเป็นโมดูล นี่คือ dubbo_api เรากำหนดอินเทอร์เฟซต่อไปนี้ในโมดูลนี้:
ผู้ใช้งานสาธารณะผู้ใช้งาน {รายการ <Mouser> getUsers (); -จากนั้นสร้างโมดูลผู้ให้บริการซึ่งขึ้นอยู่กับโมดูล dubbo_api และดำเนินการอินเทอร์เฟซ Userservice รหัสมีดังนี้:
คลาสสาธารณะ UserserViceImpl ใช้ UserserVice {@Value ("$ {Server.port}") พอร์ต INT ส่วนตัว; / ** * @return */ @Override รายการสาธารณะ <Mouser> getUsers () {รายการ <Mouser> list = new ArrayList <> (); สำหรับ (int i = 0; i <5; i ++) {user user = mouser ใหม่ (); user.setUserName ("shenniu" + i); user.setUserPwd ("พอร์ต:" + พอร์ต); list.add (ผู้ใช้); } return list; -ในฐานะผู้ให้บริการเพื่อใช้ Dubbo Framework คุณต้องแนะนำ Dubbo ก่อนจากนั้นทำการกำหนดค่าบางอย่าง ก่อนอื่นเราต้องแนะนำการพึ่งพา Dubbo ผ่าน Maven ในโมดูล Dubbo_Provider Zookeeper ใช้ในศูนย์ลงทะเบียนดังนั้นเราจึงต้องแนะนำการพึ่งพาที่สอดคล้องกันผ่าน Maven:
<การพึ่งพา> <roupId> org.apache.zookeeper </groupId> <ratifactid> Zookeeper </artifactid> <version> 3.4.8 </เวอร์ชัน> </การพึ่งพา> <การพึ่งพา> <roupid> com.101tec </groupid> <roupId> com.alibaba </groupId> <ratifactid> Dubbo </artifactid> <version> 2.5.3 </เวอร์ชัน> <exclusions> <exclusion> <scalusion> <ArtIfactId> dubbo_api </artifactid> <version> 0.0.1-snapshot </version> </derctency>
หลังจากเสร็จสิ้นการพึ่งพาส่วนที่เหลือคือการกำหนดค่าผู้ให้บริการของ Dubbo สร้างไฟล์กำหนดค่าของทรัพยากร/Dubbo-Conf/Server.xml และเนื้อหาไฟล์:
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://ww.w3.org/2001/xml xmlns: dubbo = "http://code.alibabatech.com/schema/dubbo" XSI: schemalocation = "http://www.springframework.org/schema/beans http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd "> <! ที่อยู่ = "192.168.168.168:2081" /> <!-ใช้โปรโตคอล Dubbo เพื่อเปิดเผยบริการบนพอร์ต 20880 พอร์ตการสื่อสารของโปรโตคอล-> <Dubbo: Protocol name = "Dubbo" พอร์ต = "20880" /> <! การใช้งาน-> <bean id = "userservice"/> </ebeans>
เพิ่มการนำเข้าทรัพยากร @importresource ("classpath: dubbo-conf/*. xml") ในพอร์ทัล dubboproviderapplication และผู้ให้บริการของเราเสร็จสิ้นที่นี่ ตรวจสอบบันทึกการเริ่มต้น:
ไม่มีข้อยกเว้นเมื่อผู้ให้บริการเริ่มต้น ลองดูที่ผู้โทรเพื่อสร้างโมดูลของ Dubbo_Consumer และแนะนำการอ้างอิงโมดูลของอินเทอร์เฟซสาธารณะ Dubbo_API จากนั้นสร้าง userController และเปิดเผยอินเทอร์เฟซผู้ใช้ GET:
@RestControllerPublic คลาส USERCONTROLLER {@AutoWired Userservice Userservice; @getMapping ("/ผู้ใช้") รายการสาธารณะ <Mouser> getUsers () {return userservice.getUsers (); -ผู้ใช้ที่นี่คือการฉีดอินเทอร์เฟซสาธารณะ หลังจากการเข้ารหัสเสร็จสิ้นฝ่ายผู้บริโภคจะแนะนำการพึ่งพา Dubbo และ Zookeeper:
<การพึ่งพา> <roupId> org.apache.zookeeper </groupId> <ratifactid> Zookeeper </artifactid> <version> 3.4.8 </เวอร์ชัน> </การพึ่งพา> <การพึ่งพา> <roupid> com.101tec </groupid> <RoupID> com.alibaba </roupId> <ratifactid> Dubbo </artifactid> <version> 2.5.3 </เวอร์ชัน> <exclusions> <exclusion> <sclusion>
นอกจากนี้เรายังสร้างไฟล์กำหนดค่าด้วยชื่อทรัพยากรชื่อ/dubbo-conf/client.xml และแนะนำทรัพยากรนี้ในรายการแอปพลิเคชัน:
@importresource ("classpath: dubbo-conf/*. xml")@springbootapplicationpublic คลาส dubboconsumerapplication {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {springapplication.run (dubboconsumerapplication.class, args); -เนื้อหาการกำหนดค่าของ client.xml มีดังนี้:
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://ww.w3.org/2001/xml xmlns: dubbo = "http://code.alibabatech.com/schema/dubbo" XSI: schemalocation = "http://www.springframework.org/schema/beans http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd "> <!-ชื่อบริการ-> <dubbo: ชื่อแอปพลิเคชัน =" Demo-consumer "/> <! address = "192.168.168.168:2081" /> <!-อินเทอร์เฟซบริการผู้ใช้-> <dubbo: ID อ้างอิง = "Userservice" interface = "Service.userService" /> </ebeans>
ในเวลานี้ผู้ให้บริการอย่างง่ายการกำหนดค่าผู้เรียกบริการและการเข้ารหัสเสร็จสมบูรณ์และโมดูล 3 โมดูลมีดังนี้:
จากนั้นเริ่มผู้ให้บริการและผู้บริโภคตามลำดับ จากนั้นขออินเทอร์เฟซผ่านอินเทอร์เฟซคอนโทรลเลอร์ที่ผู้บริโภคเปิดเผย ที่อยู่ของฉันนี่คือ http: // localhost: 8082/ผู้ใช้:
ผลกระทบคือผู้บริโภคได้รับผลลัพธ์ที่ส่งคืนโดยผู้ให้บริการผ่านการเรียกใช้อินเตอร์เฟส Userservice Interface Getusers () ซึ่งหมายความว่าการใช้งาน Dubbo Framework อย่างง่ายได้รับการพิจารณาว่าประสบความสำเร็จ
การปรับใช้ Dubbo-Admin
ในฐานะที่เป็น RPC Framework Dubbo ที่ได้รับความนิยมมีเครื่องมือตรวจสอบโอเพนซอร์ส Dubbo-admin ฉันต้องบอกว่าแพ็คเกจ dubbo-admin.war ที่พร้อมทำบนอินเทอร์เน็ตไม่สามารถใช้งานได้ในขณะนี้หรือต้องการคะแนน CSSDN เพื่อดาวน์โหลด มีหลายรุ่นและมันค่อนข้างยุ่งยาก ไปที่ Git เพื่อดึงซอร์สโค้ดและบรรจุด้วยตัวเอง ที่อยู่ Git คือ: https://github.com/apache/incubator-dubbo-ops หลังจากดึงมันลงเราจะต้องให้ความสนใจกับโครงการ Dubbo-Admin และสิ่งอื่น ๆ สามารถเพิกเฉยได้ในขณะนี้ หลังจากเปิดโครงการเราต้องแก้ไขการกำหนดค่าภาพหน้าจอต่อไปนี้เท่านั้น (คุณสามารถแก้ไขไฟล์การกำหนดค่าแพคเกจ):
#ZooKeeper ที่อยู่การกำหนดค่าและพอร์ต dubbo.registry.address = zookeeper: //127.0.0.1: 2081#รหัสผ่านเข้าสู่ระบบแบ็กเอนด์ Dubbo.admin.root.password = rootdubbo.admin.guest.password = guest.
หลังจากดำเนินการแพ็คเกจคุณสามารถรับชื่อ: แพ็คเกจ Dubbo-Admin-2.0.0.war จากนั้นใส่ไว้ใน Tomcat และเรียกดูเบราว์เซอร์ บัญชีและรหัสผ่านเป็นทั้งรูท หลังจากเข้าสู่ระบบคุณสามารถเห็นผู้ให้บริการและผู้บริโภคที่เราเริ่มต้นมาก่อน นี่คืออินเทอร์เฟซของบริการลงทะเบียนศูนย์การตรวจสอบ Dubbo-Admin คุณสามารถคลิกที่บริการเหล่านี้โดยตรง หากคุณไม่พูดมากลองด้วยตัวเอง
ที่อยู่ GIT: https://github.com/shenniuboxing3 Nuget Publishing แพ็คเกจ: https://www.nuget.org/profiles/shenniuboxing3
สรุป
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่าเนื้อหาของบทความนี้จะมีค่าอ้างอิงบางอย่างสำหรับการศึกษาหรือที่ทำงานของทุกคน หากคุณมีคำถามใด ๆ คุณสามารถฝากข้อความไว้เพื่อสื่อสาร ขอบคุณสำหรับการสนับสนุน Wulin.com