머리말
인터넷 개발을 통해 웹 사이트 응용 프로그램 규모가 지속적으로 확장되었으며 기존의 수직 응용 프로그램 아키텍처는 더 이상 대처할 수 없습니다. 분산 서비스 아키텍처 및 모바일 컴퓨팅 아키텍처가 필수적입니다. Dubbo는 분산 서비스 프레임 워크로,이 경우 태어났습니다. 이제 핵심 비즈니스는 독립적 인 서비스로 추출되어 프론트 엔드 애플리케이션이 더 빠르고 안정적으로 응답 할 수 있습니다.
Dubbo는 무엇입니까?
Dubbo는 Alibaba의 오픈 소스 분산 서비스 프레임 워크입니다. 가장 큰 특징은 층상으로 구성되어 있다는 것입니다. 이 방법은 층간에 분리 (또는 느슨한 커플 링을 최대화) 할 수 있습니다. 서비스 모델의 관점에서 Dubbo는 매우 간단한 모델을 채택합니다. 제공자는 서비스를 제공하거나 소비자가 서비스를 소비합니다. 따라서이 시점에 따라 서비스 제공 업체와 서비스 소비자의 두 가지 역할을 추상화 할 수 있습니다. 등록 센터, 계약 지원, 서비스 모니터링 및 기타 컨텐츠 정보
Dubbo가 할 수있는 일
웹 사이트가 커지면 개발 효율성을 향상시키고 성능을 최적화하고 주요 경쟁 리소스를 저장하는 데 응용 프로그램이 분할되고 서비스가 필요합니다 (마이크로 서비스)이 필요합니다.
점점 더 많은 서비스로 인해 서비스의 URL 주소 정보가 폭발하고 구성 관리가 매우 어려워지고 F5 하드웨어로드 밸런서의 단일 포인트 압력이 점점 커지고 있습니다.
추가 개발이 발생하면 서비스 간 종속성이 복잡해지고 심지어 어떤 응용 프로그램이 시작된 어플리케이션이 시작되었는지 알 수 없으므로 건축가는 응용 프로그램의 아키텍처 관계를 완전히 설명 할 수 없습니다.
그런 다음 서비스 호출 수가 커지고 서비스 용량 문제가 노출됩니다. 이 서비스는 얼마나 많은 기계 지원이 필요합니까? 언제 기계를 추가해야합니까? 등……
이러한 문제가 발생할 때 Dubbo를 사용하여 해결할 수 있습니다.
이번에 내가 공유하는 것은 Dubbo Framework 응용 프로그램의 초기 구성과 Zookeeper 등록 센터의 사용입니다. 등록 센터와 관련하여 Zookeeper와 Eureka의 두 가지 유형 만 있습니다. Dubbo와 ZK를 사용하고 Springcloud와 함께 Eureka를 사용합니다. 그러므로 나는 당신에게 도움이되기를 바라면서 나중에 마이크로 서비스에 관한 몇 가지 장들과 공유 할 것입니다.
등록 센터 Zookeeper를 설치하십시오
Dubbo 프레임 워크 제공 업체 및 소비자
Dubbo-Admin 배포
등록 센터 Zookeeper를 설치하십시오
우선, Zookeeper 다운로드 주소를 온라인으로 검색해야합니다. 나는 Linux 시스템에 있으므로 Zookeeper-3.3.6.tar.gz 패키지를 다운로드하여 Tar-ZXVF Zookeeper-3.3.6.tar.gz를 통해 압축을 풀었습니다. 일반 패키지의 구성 파일은 기본 샘플 버전이며 Zookeeper의 기본 구성 파일 이름은 Zoo.cfg입니다. 파일 이름을 매번 지정하지 않으려면 conf 디렉토리에서 zoo.cfg라는 구성 파일을 만들어야합니다. 파일 컨텐츠는 ZOO_SAMPLE.CFG에서 복사하거나 파일 이름을 바꿀 수 있습니다. 내용은 다음과 같습니다. vim zoo.cfg는 다음과 같습니다.
# 각 tickticktime = 2000 #heartbeat 주파수 # 초기 # 동기화 단계가 #Restrict 연결 # Restrict 연결 # # Restrict Connection을 취할 수있는 진드기의 수 # # heartsynclimit을 전달하고 heiredingsynclimit = 5 # 스냅 샷이 staned. datapeper # the the the the the the the the the the the the the the director # the directory # the directory # the directory # 클라이언트는 ConnectClientPort = 2081 #ZooKeeper 외부 포트를 제공합니다
여기서 매개 변수 정보를 수정하지 않고 기본값을 사용하지 않습니다. Linux에서 파일 컨텐츠를 편집하는 방법에 대해 일반적으로 사용되는 몇 가지 명령을 간략하게 소개합니다.
VIM ZOO.CFG : 파일 컨텐츠보기
삽입 : 삽입 명령을 실행하십시오
ESC : 명령을 취소 한 다음 다음을 누르고 다음을 누릅니다 : Q : EXIT, : WQ : 저장 및 종료
zoo.cfg가있는 경우 zkserver.sh 파일을 찾기 위해 BIN 디렉토리 만 입력하고 ./zkserver.sh start 명령을 실행하여 Zookeeper 등록 센터를 시작하면됩니다. 일반 시작 프롬프트는 다음과 같습니다.
일반적으로 Zookeeper는 등록 센터로 별도의 서버에 있으며 프로그램 (여기서는 내 현지인)이 다른 등록 센터에 전화해야합니다. 또한 등록 센터는 열린 동물원의 Zookeeper 포트를 연결할 수 있는지 확인해야합니다. 내 로컬은 Windows 10이므로 Zookeeper 클라이언트를 통해 포트를 확인할 필요가 없습니다. 포트가 열려 있는지 여부를 감지하기 위해 Telnet IP 2081 만 사용하면됩니다.
Dubbo 프레임 워크 제공 업체 및 소비자
우선, 편의상 비즈니스에서 추출한 공개 인터페이스 인 통합 인터페이스를 정의해야합니다. 이 인터페이스를 모듈로 별도로 포장합니다. Dubbo_api는 다음과 같습니다. 이 모듈에서 다음 인터페이스를 정의합니다.
공개 인터페이스 userService {list <Mouser> getUsers (); }그런 다음 Dubbo_api 모듈에 의존하는 공급자 모듈을 작성하고 사용자 서비스 인터페이스를 구현하면 코드는 다음과 같습니다.
public class usererviceimpl은 userervice {@value ( "$ {server.port}") private int port를 구현합니다. / ** * @return */ @override public list <Mouser> getUsers () {list <Mouser> list = new ArrayList <> (); for (int i = 0; i <5; i ++) {mouser user = new Mouser (); user.setusername ( "shenniu" + i); user.setuserpwd ( "포트 :" + 포트); list.add (사용자); } 반환 목록; }}서비스 제공 업체로서 Dubbo 프레임 워크를 사용하려면 먼저 Dubbo를 소개 한 다음 일부 구성을 수행해야합니다. 먼저 Dubbo_provider 모듈의 Maven을 통해 Dubbo 종속성을 소개해야합니다. Zookeeper는 등록 센터에서 사용되므로 Maven을 통해 해당 종속성도 소개해야합니다.
<pectionency> <groupid> org.apache.zookeeper </groupid> <artifactid> Zookeeper </artifactid> <bersion> 3.4.8 </version> </fectionency> <pectionement> <groupid> com.101tec </groupid> <artifactid> zkclient </affactid> 0.3 </version> 0.3 </version> </version> </version> </version> </version>. <groupid> com.alibaba </groupid> <artifactid> dubbo </artifactid> <bersion> 2.5.3 </version> <exclusion> <groupid> org.springframework </groupid> <artifactid> spring </artifactid> </proflusion> </fexcentions> <group <complample> <groupid> <artifactid> dubbo_api </artifactid> <bersion> 0.0.1-snapshot </version> </fectionency>
종속성을 완료 한 후 나머지는 Dubbo의 공급자를 구성하고 Resources/Dubbo-Conf/Server.xml의 구성 파일 및 파일 내용을 작성하는 것입니다.
<? xml 버전 = "1.0"alcoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans"xmlns : xsi = "http://ww.w.w3.org/2001/xmlschema-instance" xmlns : dubbo = "http://code.alibabatech.com/schema/dubbo"xsi : schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/schema/schema/sproneans/schema/schema/schema/schema/schema/beans/beans/beans/beans http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd "> <!-제공자 이름-> <Dubbo : Application Name ="Demo-Provider "/> <!-ZookeEper Registration Center의 서비스 주소 : dubbo : Registry Protocopeper" 주소 = "192.168.168.168:2081" /> <!-Dubbo 프로토콜을 사용하여 Port 20880, Protocol Communication Port-> <dubbo : "dubbo"port = "20880" /> <! id = "userservice"/> </beans>
DubboproviderApplication Portal에 Resource import @Importresource ( "ClassPath : Dubbo-Conf/*. XML")를 추가하면 서비스 제공 업체가 여기에서 완료됩니다. 시작 로그 확인 :
서비스 제공 업체가 시작될 때 예외는 없습니다. 발신자를 살펴보고 Dubbo_Consumer 모듈을 만들고 Dubbo_api Public 인터페이스의 모듈 종속성을 소개 한 다음 USERCONTroller를 작성한 다음 GET 사용자 인터페이스를 노출시킵니다.
@RestControllerPublic Class USERCONTROLLER {@autowired private userervice userervice; @GetMapping ( "/Users") 공개 목록 <Mouser> getUsers () {return userErvice.getUsers (); }}여기서 사용자 서비스는 공개 인터페이스의 주입입니다. 인코딩이 완료된 후 소비자 측은 Dubbo 및 Zookeeper 의존성을 소개합니다.
<pectionency> <groupid> org.apache.zookeeper </groupid> <artifactid> Zookeeper </artifactid> <bersion> 3.4.8 </version> </fectionency> <pectionement> <groupid> com.101tec </groupid> <artifactid> zkclient </affactid> 0.3 </version> 0.3 </version> </version> </version> </version> </version>. <groupid> com.alibaba </groupid> <artifactid> dubbo </artifactid> <bersion> 2.5.3 </version> <exclusions> <exclusion> <groupid> org.springframework </groupid> <artifactid> spring </artifactid> </deplionentions>
또한 Name Resources/Dubbo-Conf/Client.xml의 구성 파일을 작성하고 응용 프로그램 항목 에서이 리소스를 소개합니다.
@importresource ( "classpath : dubbo-conf/*. xml")@springbootApplicationPublic Class dubboconsumerApplication {public static void main (String [] args) {springApplication.Run (dubBoconsumerApplication.class, args); }}client.xml의 구성 내용은 다음과 같습니다.
<? xml 버전 = "1.0"alcoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans"xmlns : xsi = "http://ww.w.w3.org/2001/xmlschema-instance" xmlns : dubbo = "http://code.alibabatech.com/schema/dubbo"xsi : schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/schema/schema/sproneans/schema/schema/schema/schema/schema/beans/beans/beans/beans http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd "> <!-서비스 이름-> <dubbo : application name ="Demo-consumer "/> <!-Zooke-registration Center-<legistration protocoke" 주소 = "192.168.168.168:2081" /> <!-사용자 서비스 인터페이스-> <dubbo : reference id = "usererVice"interface = "service.userService" /> < /beans>
현재 간단한 서비스 제공 업체, 서비스 호출자 구성 및 인코딩이 완료되고 3 개의 모듈은 다음과 같습니다.
그런 다음 제공자와 소비자를 각각 시작하십시오. 그런 다음 소비자가 노출 한 컨트롤러 인터페이스를 통해 인터페이스를 요청하십시오. 여기 내 주소는 http : // localhost : 8082/users :
그 효과는 소비자가 주입 된 Userservice Interface Call GetUsers ()를 통해 제공자가 결과를 반환하는 것입니다. 이는 또한 Dubbo 프레임 워크의 간단한 사용이 성공적인 것으로 간주되었음을 의미합니다.
Dubbo-Admin 배포
인기있는 RPC 프레임 워크 Dubbo는이 오픈 소스 모니터링 도구 Dubbo-Admin을 보유하고 있습니다. 인터넷에서 기성품 인 Dubbo-Admin.war 패키지는 지금 사용하지 않거나 다운로드하려면 CSSDN 포인트가 필요할 수 있다고 말해야합니다. 많은 버전이 있으며 약간 까다 롭습니다. 결정적으로 GIT로 가서 소스 코드를 당기고 직접 포장하십시오. git 주소는 https://github.com/apache/incubator-dubbo-ops입니다. 그것을 철회 한 후에, 우리는 Dubbo-Admin 프로젝트에주의를 기울이기 만하면되며, 당분간 다른 것들을 무시할 수 있습니다. 프로젝트를 열면 다음 스크린 샷 구성 만 수정하면됩니다 (패키지 구성 파일도 수정할 수 있음).
#zookeeper 구성 주소 및 Port 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을 지원 해주셔서 감사합니다.