【Dubbo】Zookeeper+Dubbo專案demo搭建
一、Dubbo的註解配置
在Dubbo 2.6.3及以上版本提供支援。
1、@Service(全路徑@org.apache.dubbo.config.annotation.Service)
配置服務提供方用以暴露服務,添加於api介面的實現類上,並可通過註解提供的屬性進一步定製化服務。
其中比較重要的屬性有:
- @Service只能定義在一個類上,用以提供一個服務的具體實現
- interfaceClass:指定服務提供方實現的interface的類
- interfaceName:指定服務提供方實現的interface的類名
- version
- group:指定服務分組
- export:是否暴露服務
- register:是否向註冊中心註冊服務
- application:應用配置
- module:模組配置
- provider:服務提供方配置
- protocol:傳輸層協議配置
- monitor:監控中心配置
- registry:註冊中心配置
注意,8-13需要提供對應的spring bean的名字,bean的組裝可以通過傳統的XML配置方式完成,或者Java Config的方式配置(推薦使用)。
2、@Reference(全路徑@org.apache.dubbo,config.annotation.Reference)
服務消費方用以引用服務,通過動態代理來實現介面的引用,同樣可通過註解提供的屬性進一步定製化服務。
其中比較重要的屬性有:
- @Reference通常定義在一個欄位上,表示一個服務的引用
- interfaceClass:指定服務的interface的類
- interfaceName:指定服務的interface的類名
- version
- group
- url:指定服務提供方的URL地址,繞過註冊中心直接發起呼叫
- application:應用配置
- module:模組配置
- consumer:服務消費方配置
- protocol:協議配置
- monitor:監控中心配置
- registry:註冊中心配置
同上,7-12需要提供對應的spring bean的名字,推薦使用Java Config的方式進行組裝Bean。
3、@EnableDubbo(全路徑org.apache.dubbo.config.spring.context.annotation.EnableDubbo)
@EnableDubbo註解是@EnableDubboConfig和@DubboComponentScan兩者組合的便捷表達。
@EnableDubbo提供scanBasePackages和scanBasePackageClasses屬性,可以在指定的包名或者類中掃描Dubbo的服務提供者(@Service標註)和服務消費者(@Reference標註),掃描到服務的提供者或消費者後,對其進行相應的組裝並初始化, 最終完成服務的暴露或引用。
掃描提供者和消費者的功能@DubboComponnetScan也可以實現,@EnableDubboConfig提供外部化配置的支援。
二、Dubbo的API屬性配置
目前,通過@Service、@Reference、@EnableDubbo註解,實現了服務的暴露和發現引用,除此之外,還需要一些其他的屬性配置,諸如應用名、註冊中心、協議資訊等。
1、Dubbo中配置類結構
2、注入這些配置屬性,有兩種方式,分別是採用配置檔案和Java Config硬編碼的形式。
2.1、配置檔案方式
在resources下建立xxx.properties檔案,在其中新增各項屬性配置,形式如下:
dubbo.application.name=provider dubbo.registry.address=zookeeper://127.0.0.1:2181 dubbo.protocol.name=dubbo dubbo.protocol.port=20880
然後通過@PropertySource("classpath:/xxx.properties")註解匯入配置;
匯入屬性在啟動時,會被自動組裝成相應的配置類。
2.2、Java Config硬編碼方式
建立providerConfiguration類,標註@Configuration註解;
在該類中,通過@Beab的形式分別配置需要的配置類,如下:
1 @Bean 2 public ApplicationConfig applicationConfig() { 3 ApplicationConfig applicationConfig = new ApplicationConfig(); 4 applicationConfig.setName("provider"); 5 return applicationConfig; 6 } 7 8 @Bean 9 public ProtocolConfig protocolConfig() { 10 ProtocolConfig protocolConfig = new ProtocolConfig(); 11 protocolConfig.setName("dubbo"); 12 protocolConfig.setPort("20880"); 13 return protocolConfig; 14 } 15 16 @Bean 17 public RegistryConfig registryConfig() { 18 RegistryConfig registryConfig = new RegistryConfig(); 19 registryConfig.setProtocol("zookeeper"); 20 registryConfig.setAddress("localhost"); 21 registryConfig.setPort(2181); 22 return registryConfig; 23 }
在具體實現中,建立Config類,通過Java Config技術(@Configuration)和annotation掃描(@EnableDubbo)來發現、組裝服務提供者和消費者。
三、其他相關Spring註解
1、@Configuration(全路徑org.springframework.context.annotation.Configuration)
@Configuration註解用來定義配置類,可替換XML配置檔案,被註解類內有多個@Bean標註方法,這些方法會被AnnotationConfigApplicationContext或者AnnotationConfigWebApplicationContext類進行掃描,用於構建bean並初始化spring容器。
@Configuration註解的配置類有以下要求:
-
- @Configuration註解的配置類不可以是final型別。
- 內部巢狀的內部Configuration類必須是靜態類。
1.1、@Configuration配置spring並啟動spring容器
起到為spring容器配置應用上下文的作用:
ApplicationContext context = new AnnotationConfigApplicationContext(TestConfiguration.class);
效果等價於用XML檔案配置:
ApplicationContext context = new ClassPathXmlApplicationContext("test-spring-context.xml");
1.2、@Configuration啟動容器+@Bean註冊bean,@Bean下管理bean的生命週期
@Bean標註在方法上,作用相當於註冊Bean,注意:
-
- @Bean標註在返回例項的方法上,如果未通過@Bean指定bean的名稱,預設與標註方法名同名。
- @Bean標註預設bean作用域為單例singleton,可通過@Scope()設定。
- @Bean的作用是註冊bean,因此也可以用@Component、@Controller、@Service、@Repository等進行註冊,不過需要配置@ComponentScan註解進行自動掃描。
- 可以通過@Bean管理bean的生命週期。
1.3、組合多個配置來源
通過@ImportSource("classpath:/xxx.xml")匯入XML配置檔案;
通過@Import(TestConfiguration.class)匯入其他配置類;
通過@Configuration巢狀(巢狀額Configuration類必須為靜態類)。
2、@Component、@Service、@Controller、@Repository、@RestController、@Bean
修飾的類均會被掃描到並注入到spring的bean容器中。
2.1、@Component
通用註解,可以被注入到spring容器進行管理。
2.2、@Service、@Controller、@Repository是針對不同使用場景採用的特定功能化的註解元件。
-
- @Service:作用於業務邏輯層
- @Controller:作用於表現層(springMVC註解),註解的bean會被spring-mvc框架使用,進行前端請求的處理、轉發、重定向,包括呼叫service層的方法
- @Repository:作用於持久層,表明該類是用來執行與資料庫相關的操作,並支援自動處理資料庫操作產生的異常
2.3、@Controller和@RestController
首先兩者都是表明該類可以接受HTTP請求,@RestController相當於@Controller+@ResponseBody的作用。
在@RestController中,返回的應該是一個物件,即使沒有前端介面的渲染,也可以看到返回的是該物件對應的json字串,而前端的作用就是利用返回的json進行解析並渲染介面。
在@Controller中,返回的是一個字串,或者代表與字串匹配的模板名稱,與HTML頁面配合使用。
- 如果只是用@RestController註解,則Controller方法中無法返回jsp頁面,配置的檢視解析器InternalResourceViewResolver不起作用,返回的內容就是方法中return的值。
- 如需要指定返回某個頁面,則需要用@Controller配合檢視解析器InternalResourceViewResolver使用。
- 如果需要返回Json、XML或自定義的mediaType內容到頁面,@RestController直接就能做到,但在@Controller中需要在相應方法上加上@ResponseBody註解。
2.4、@Bean和@Component(@Service、@Controller、@Repository)的區別
- @Component註解表明一個類作為元件類,並告知spring為該類建立bean。
- @Bean註解告訴spring這個方法將返回一個物件,該物件要註冊為spring應用上下文中的bean。
兩者目的都是註冊bean到Spring容器中。
- @Component通常是通過類路徑掃描來自動偵測並自動裝配到spring容器中。作用於類。
- @Bean註解通常是我們在標有該註解的方法中自定義產生這個bean的邏輯。作用於方法。
3、@Autowired、@Resource
@Autowired預設按照型別裝配。
預設要求依賴的物件必須存在,若允許為NULL,可以設定required屬性為false。
@Resouce預設按照名稱裝配。
可以通過name屬性指定,指定了name屬性,就只能按照名稱裝配。
有兩個重要的屬性,name和人type,將name屬性解析為bean的名字,type解析為bean的型別。
使用了name屬性,則使用byName的自動注入策略;而使用type屬性,則使用byType的自動注入策略。
@Resouce的裝配順序:
- 同時指定了name和type屬性,從spring上下文找到唯一匹配的bean進行裝配,找不到則丟擲異常。
- 指定了name屬性,從上下文查詢名稱匹配的bean進行裝配,找不到則丟擲異常。
- 指定了type屬性,從上下文查詢型別匹配的唯一bean進行裝配,找不到或者找到多個則丟擲異常。
- 屬性均未指定,則預設按照byName的方式進行查詢裝配。
4、@PropertySource、@ImportResource
@ImportResource:匯入spring的配置檔案,如xxx.XML。
@PropertySource
@ConfigurationProperties是預設從全域性配置檔案中獲取指定的值,例如@ConfigurationProperties(prefix=“person”)是從application.yml(properties)中載入person的屬性並對映到對應類的屬性。
如果配置在xxx.properties中(非全域性配置檔案),就需要用@PropertySource(value={"classpath:/xxx.properties"})匯入指定配置檔案。
四、專案搭建流程
1、註冊中心Zookeeper搭建
Zookeeper的安裝不在此介紹,可參考:Zookeeper單點與叢集安裝
2、專案框架搭建
建立maven專案hello_dubbo,刪掉其中的src資料夾,並新增對spring-boot的依賴,作為整個專案執行環境。
新建new module,依次為api(服務介面公共包)、provider(服務提供者模組)、consumer(服務消費者模組),。
此時專案結構如圖:
pom檔案關鍵資訊為:
1 <groupId>com.li</groupId> 2 <artifactId>hello_dubbo</artifactId> 3 <version>1.0-SNAPSHOT</version> 4 5 <parent> 6 <groupId>org.springframework.boot</groupId> 7 <artifactId>spring-boot-starter-parent</artifactId> 8 <version>2.1.9.RELEASE</version> 9 <relativePath/> 10 </parent> 11 12 <modules> 13 <module>api</module> 14 <module>provider</module> 15 <module>consumer</module> 16 </modules>hello_dubbo_pom.xml
3、api包
在pom檔案中配置依賴關係:
1 <parent> 2 <groupId>com.li</groupId> 3 <artifactId>hello_dubbo</artifactId> 4 <version>1.0-SNAPSHOT</version> 5 </parent> 6 7 <artifactId>api</artifactId>api_pom.xml
在api包中建立要對外提供服務的介面類HelloAPI.java:
1 package com.li.api; 2 3 public interface HelloApi { 4 5 public String sayHello(String name); 6 }HelloApi
此時的api模組結構:
4、provider專案
1、修改pom檔案,新增相關依賴:
1 <parent> 2 <groupId>com.li</groupId> 3 <artifactId>hello_dubbo</artifactId> 4 <version>1.0-SNAPSHOT</version> 5 </parent> 6 7 <artifactId>provider</artifactId> 8 <version>0.0.1-SNAPSHOT</version> 9 <name>provider</name> 10 11 <dependencies> 12 <!--web支援--> 13 <dependency> 14 <groupId>org.springframework.boot</groupId> 15 <artifactId>spring-boot-starter-web</artifactId> 16 </dependency> 17 <!--新增Zookeeper依賴--> 18 <dependency> 19 <groupId>org.apache.zookeeper</groupId> 20 <artifactId>zookeeper</artifactId> 21 <version>3.5.5</version> 22 <exclusions> 23 <exclusion> 24 <groupId>org.slf4j</groupId> 25 <artifactId>slf4j-log4j12</artifactId> 26 </exclusion> 27 </exclusions> 28 </dependency> 29 <!--新增Dubbo依賴,已併入apache--> 30 <dependency> 31 <groupId>org.apache.dubbo</groupId> 32 <artifactId>dubbo</artifactId> 33 <version>2.7.3</version> 34 </dependency> 35 <!--新增zookeeper客戶端框架Curator--> 36 <dependency> 37 <groupId>org.apache.curator</groupId> 38 <artifactId>curator-framework</artifactId> 39 <version>4.2.0</version> 40 </dependency> 41 <dependency> 42 <groupId>org.apache.curator</groupId> 43 <artifactId>curator-recipes</artifactId> 44 <version>4.2.0</version> 45 </dependency> 46 <dependency> 47 <groupId>org.springframework.boot</groupId> 48 <artifactId>spring-boot-starter-test</artifactId> 49 <scope>test</scope> 50 </dependency> 51 <!--新增對API模組的依賴--> 52 <dependency> 53 <groupId>com.li</groupId> 54 <artifactId>api</artifactId> 55 <version>1.0-SNAPSHOT</version> 56 <scope>compile</scope> 57 </dependency> 58 </dependencies>provider_pom.xml
2、新增service包,在其中建立api介面的實現類,提供服務的具體實現,並用@Service暴露服務:
1 package com.li.provider.service; 2 3 import com.li.api.HelloApi; 4 import org.apache.dubbo.config.annotation.Service; 5 6 @Service 7 public class HelloService implements HelloApi { 8 9 @Override 10 public String sayHello(String name) { 11 return "hello " + name; 12 } 13 }HelloService
3、provider的配置注入方式選擇採用properties檔案的形式。
在resources下新增provider.properties配置檔案:
1 dubbo.application.name=helloP 2 dubbo.registry.address=zookeeper://127.0.0.1:2181 3 dubbo.protocol.name=dubbo 4 dubbo.protocol.port=20880 5 server.port=8001provider.properties
在主目錄下建立Configuration類,作為配置類:
1 package com.li.provider; 2 3 import org.apache.dubbo.config.spring.context.annotation.EnableDubbo; 4 import org.springframework.context.annotation.Configuration; 5 import org.springframework.context.annotation.PropertySource; 6 7 @Configuration 8 @EnableDubbo(scanBasePackages = "com.li.provider.service") 9 @PropertySource("classpath:/provider.properties") 10 public class ProviderConfiguration { 11 }ProviderConfiguration
4、啟動類選擇springBoot啟動:
1 package com.li.provider; 2 3 import org.springframework.boot.SpringApplication; 4 import org.springframework.boot.autoconfigure.SpringBootApplication; 5 6 @SpringBootApplication 7 public class ProviderApplication { 8 9 public static void main(String[] args) { 10 SpringApplication.run(ProviderApplication.class, args); 11 } 12 13 }ProviderApplication
5、至此,Provider模組完成,專案結構如下:
5、consumer專案
1、修改pom檔案,新增相關依賴:
1 <parent> 2 <groupId>com.li</groupId> 3 <artifactId>hello_dubbo</artifactId> 4 <version>1.0-SNAPSHOT</version> 5 </parent> 6 7 <artifactId>consumer</artifactId> 8 <version>0.0.1-SNAPSHOT</version> 9 <name>consumer</name> 10 11 <dependencies> 12 <!--web支援--> 13 <dependency> 14 <groupId>org.springframework.boot</groupId> 15 <artifactId>spring-boot-starter-web</artifactId> 16 </dependency> 17 <!--新增Zookeeper依賴--> 18 <dependency> 19 <groupId>org.apache.zookeeper</groupId> 20 <artifactId>zookeeper</artifactId> 21 <version>3.5.5</version> 22 <exclusions> 23 <exclusion> 24 <groupId>org.slf4j</groupId> 25 <artifactId>slf4j-log4j12</artifactId> 26 </exclusion> 27 </exclusions> 28 </dependency> 29 <!--新增Dubbo依賴,已併入apache--> 30 <dependency> 31 <groupId>org.apache.dubbo</groupId> 32 <artifactId>dubbo</artifactId> 33 <version>2.7.3</version> 34 </dependency> 35 <!--新增zookeeper客戶端框架Curator--> 36 <dependency> 37 <groupId>org.apache.curator</groupId> 38 <artifactId>curator-framework</artifactId> 39 <version>4.2.0</version> 40 </dependency> 41 <dependency> 42 <groupId>org.apache.curator</groupId> 43 <artifactId>curator-recipes</artifactId> 44 <version>4.2.0</version> 45 </dependency> 46 <dependency> 47 <groupId>org.springframework.boot</groupId> 48 <artifactId>spring-boot-starter-test</artifactId> 49 <scope>test</scope> 50 </dependency> 51 <!--新增對API模組的依賴--> 52 <dependency> 53 <groupId>com.li</groupId> 54 <artifactId>api</artifactId> 55 <version>1.0-SNAPSHOT</version> 56 <scope>compile</scope> 57 </dependency> 58 </dependencies>consumer_pom.xml
2、建立action包,新增HelloAction類,作為MVC框架的service層,提供業務邏輯處理並利用@Reference提供對遠端服務的引用:
1 package com.li.consumer.action; 2 3 import com.li.api.HelloApi; 4 import org.apache.dubbo.config.annotation.Reference; 5 import org.springframework.stereotype.Service; 6 7 @Service //注意為spring的@Service註解,將其作為bean管理 8 public class HelloAction { 9 10 @Reference(check = false) 11 private HelloApi helloApi; 12 13 public String doHello(String name) { 14 return helloApi.sayHello(name); 15 } 16 }HelloAction
3、建立controller包,新增HelloController類,作為MVC框架的controller層,提供前端請求的轉發,以及業務邏輯的呼叫:
1 package com.li.consumer.controller; 2 3 import com.li.consumer.action.HelloAction; 4 import org.springframework.beans.factory.annotation.Autowired; 5 import org.springframework.web.bind.annotation.GetMapping; 6 import org.springframework.web.bind.annotation.RequestParam; 7 import org.springframework.web.bind.annotation.RestController; 8 9 @RestController 10 public class HelloController { 11 12 @Autowired 13 private HelloAction action; 14 15 @GetMapping("/hello") 16 public String hello(@RequestParam("name")String name) { 17 return action.doHello(name); 18 } 19 }HelloController
4、consumer的配置注入方式選擇採用Java Config硬編碼的形式。
在resources下新增consumer.properties配置檔案:
1 server.port=8002 //註冊對外提供服務的埠consumer.properties
在主目錄下建立Configuration類,作為配置類:
1 package com.li.consumer; 2 3 import org.apache.dubbo.config.ApplicationConfig; 4 import org.apache.dubbo.config.RegistryConfig; 5 import org.springframework.context.annotation.Bean; 6 import org.springframework.context.annotation.Configuration; 7 import org.springframework.context.annotation.PropertySource; 8 9 @Configuration 10 @PropertySource("classpath:/consumer.properties") 11 public class ConsumerConfiguration { 12 13 @Bean 14 public ApplicationConfig applicationConfig() { 15 ApplicationConfig config = new ApplicationConfig(); 16 config.setName("helloC"); 17 return config; 18 } 19 20 @Bean 21 public RegistryConfig registryConfig() { 22 RegistryConfig config = new RegistryConfig(); 23 config.setAddress("zookeeper://127.0.0.1:2181"); 24 return config; 25 } 26 }ConsumerConfiguration
5、啟動類選擇springBoot啟動:
1 package com.li.consumer; 2 3 import org.springframework.boot.SpringApplication; 4 import org.springframework.boot.autoconfigure.SpringBootApplication; 5 6 @SpringBootApplication 7 public class ConsumerApplication { 8 9 public static void main(String[] args) { 10 SpringApplication.run(ConsumerApplication.class, args); 11 } 12 13 }ConsumerApplication
6、至此,Consumer模組完成,專案結構如下:
6、專案啟動
專案啟動時,首先啟動Zookeeper,命令列執行zkServer.cmd。
正常啟動順序應該先啟動提供者,然後啟動消費者,因為@Reference註解在啟動時預設會去註冊中心檢查所引用服務狀態是否正常提供服務,若想先啟動消費者,可選擇關閉檢查功能,@Reference(check=false)。
全部啟動後,可開啟zk客戶端檢視已註冊服務情況。
最後開啟瀏覽器,訪問localhost:8002/hello?name=world發現正常引用服務。
相關推薦
【Dubbo】Zookeeper+Dubbo專案demo搭建
一、Dubbo的註解配置 在Dubbo 2.6.3及以上版本提供支援。 1、@Service(全路徑@org.apache.dubbo.config.annotation.Service) 配置服務提供方用以暴露服務,添加於api介面的實現類上,並可通過註解提供的屬性進一步定製化服務。 其中比較重要的
【轉】【Dubbo】講述Dubbo和Spring Cloud微服務架構
https://blog.csdn.net/qq_41587754/article/details/80133775 微服務架構是網際網路很熱門的話題,是網際網路技術發展的必然結果。它提倡將單一應用程式劃分成一組小的服務,服務之間互相協調、互相配合,為使用者提供最終價值。雖然微服務架構沒有公認的
【SpringBoot學習之路】04.Springboot專案快速搭建
轉載宣告:商業轉載請聯絡作者獲得授權,非商業轉載請註明出處.原文來自 © 呆萌鍾【SpringBoot學習之路】04.Springboot專案快速搭建 方式一 IDEA:使用 Spring Initializer快速建立專案 選擇Spring
【23】使用vue-cli腳手架搭建webpack專案基本結構
上一篇文章介紹如何手動配置webpack專案基本結構,在真實開發環境中我們是不需要那麼麻煩的,我們可以藉助工具【vue-cli】 — 腳手架來幫我們搭建webpack專案基本結構。 第一步:我
【Docker】基於例項專案的叢集部署(二)部署專案例項介紹與搭建
部署專案簡介 我們要部署的專案是人人網的一個基於前後端分離的專案:renren-fast。 你可以在這裡對該專案進行下載,並對相關介紹文件進行了解: https://www.renren.io/community/project https://www.renren.io/guide
【Docker】基於例項專案的叢集部署(一)安裝環境搭建
叢集 叢集具有三高特點: 高效能 高負載 高可用 現在的環境中,經常會用到叢集,如資料庫叢集。如,我們在主機上部署資料庫節點,形成叢集。 安裝環境與配置 在Docker中部署叢集,首先要安裝Linux環境,這裡我們使用VMware虛擬機
Dubbo與Zookeeper監控中心monitor搭建
前面一篇介紹如何搭建dubbo管理後臺,這裡介紹是dubbo的監控系統。通過它可以看到你的服務呼叫的次數,併發數,呼叫時間等等關鍵資訊。下面看看我們如何搭建。1在我們通過之前的我們環境搭建中有下載地址https://github.com/dangdangdotcom/dubb
【dubbo】引入dubbo包(2.5.3)導致引入了低版本的spring報錯問題
首先報錯的大致內容:Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exce
【Unity】Kinect入門——專案搭建
本文是Unity Store裡的官方Demo包中的ReadMe翻譯(別人翻的),介紹了用Unity如何入門搭建起一個Kinect專案工程。 非常感謝下面這位大大的無私奉獻! 如何執行示例? 1 下載並安裝Kinect v2 SDK在下一節中
【Jenkins】包含dubbo服務的war包自動部署tomcat
在jenkis自動整合完專案後,需要將打成的war包部署到web應用伺服器上,這裡使用tomcat。jenkins自動整合後部署tomcat有很多種方式。 這裡使用了外掛和shell指令碼兩種方式。兩種
【Jenkins】Jenkins+maven+git / SVN 搭建專案自動化部署整合環境
目錄 一、完成jdk的安裝 參考我的另一博文: (1)Jenkins部署在Windows系統,jdk安裝在Windows系統:【jdk】window10:jdk 8下載和安裝步驟 二、完成git/svn的安裝 (一)根據公司使用
序【2】zookeeper節點搭建(單節點模式 || docker搭建zookeeper叢集 [bridge模式|host模式] )
分散式理論知識 CAP原理 C(Consistency):一致性,這裡指的是有效時間內資料的強一致性。 A(Availability):可用性,要求即便系統故障,也能在有效的時間內返回結果(成功或失敗) P(Partition tolera
【轉】MYSQL-CLUSTER-7.5搭建數據庫集群
安裝教程 讀寫 固定 現在 note res 順序 遠程訪問 關閉 閱讀目錄 前言 mysql cluster中的幾個概念解釋 架構圖及說明 下載mysql cluster 安裝mysql cluster之前 安裝配置管理節點 安裝配置數據和mysql節點
【轉】 cocos2dx 3.x C++搭建protobuf環境
person ccf binding csdn bind taf protoc -cp strlen http://blog.csdn.net/ganpengjin1/article/details/50964961 Cocos2dx 裏面在網絡遊戲通信這一塊一般我們都會采
【Linux】【Services】【IaaS】OpenStack-Pike(3.搭建高可用消息隊列)
mission 服務 guide lan nsis edit 錯誤 all scp 1. 簡介 1.1. 官方網站: https://www.rabbitmq.com/ 2. 安裝與配置: 詳見:https://docs.openstack.org/ha-guide/sha
【轉】Red5流服務器搭建(實現在線直播,流媒體視頻播放和在線視頻會議)
htm tps 實現 gho 共享 麥克風 一個 編碼工具 localhost 來自:http://blog.csdn.net/sunroyi666/article/details/52981639 一. 先介紹一下流媒體技術:所謂流媒體技術,是指將連續的影像和聲音信息經過
【swoole】php5.6 swoole(demo)小測試
swoole 異步通信 swoole異步任務隊列 swoole:網上看到的解釋“實現實時異步任務隊列;PHP的異步、並行、高性能網絡通信引擎,使用純C語言編寫,提供了PHP語言的異步多線程服務器,異步TCP/UDP網絡客戶端,異步MySQL,異步Redis,數據庫連接池,AsyncTask,消息隊
【轉】Zookeeper學習---zookeeper 選舉機制介紹
erp change 交換 內容 數值 所有 ase 一輪 eval 【原文】https://www.toutiao.com/i6593162565872779784/ zookeeper集群 配置多個實例共同構成一個集群對外提供服務以達到水平擴展的目的,每個服務器上的數據
【轉載】spring-boot 專案跳轉到JSP頁面
原路徑:https://blog.csdn.net/qq_36820717/article/details/80008225 1、新建spring-boot專案 目錄結構如下 2、新建TestController.java檔案,內容如下 package com.example.contr
【轉】阿里雲Ubuntu系統搭建SVN伺服器
##SVN伺服器相關軟體安裝 1、使用SSH遠端伺服器 (1)對於MAC OS/Liunx的使用者直接開啟終端輸入 ssh 使用者名稱@例項名,例如 ssh [email protected] 執行上面的命令後終端會提示輸入密碼,驗證通過後會出現如下資訊: We