安裝Zookeeper要先安裝JDK環境
解壓
tar -zxvf /usr/local/develop/jdk-8u191-linux-x64.tar.gz -C /usr/local/develop
配置JAVA_HOME
vim /etc/profile
export JAVA_HOME=/usr/local/develop/jdk1.8.0_191
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib
讓環境變量生效
source /etc/profile
java -version?查看jdk版本?至此JDK安裝完成
which java 查看調用的是安裝在哪里的java
做Zookeeper做服務治理(安裝Zookeeper)
Apache ZooKeeperhttps://zookeeper.apache.org/
進入Zookeeper 包目錄
cd /usr/local/develop/
解壓
tar -zxvf apache-zookeeper-3.9.1-bin.tar.gz -C /usr/local/develop
進入配置文件 ?
cd /usr/local/develop/apache-zookeeper-3.9.1-bin/conf
復制文件
cp zoo_sample.cfg zoo.cfg
編輯文件?
vim zoo.cfg
現在可以進入bin目錄直接啟動
cd /usr/local/develop/apache-zookeeper-3.9.1-bin/bin
啟動Zookeeper
./zkServer.sh start
如果需要配置Zookeeper為系統服務
vim /etc/systemd/system/zookeeper.service
[Unit]
Description=Apache ZooKeeper server
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/develop/apache-zookeeper-3.9.1-bin/bin/zkServer.sh start
ExecStop=/usr/local/develop/apache-zookeeper-3.9.1-bin/bin/zkServer.sh stop
User=root
Group=root
Restart=on-failure
Environment="JAVA_HOME=/usr/local/develop/jdk1.8.0_191"
[Install]
WantedBy=multi-user.target
是配置生效
systemctl daemon-reload
開機自啟 ?看自己實際需要
systemctl enable zookeeper.service
systemctl start zookeeper.service ? ?啟動
systemctl stop zookeeper.service ? ?停止
systemctl restart zookeeper.service ? ?重啟
systemctl status zookeeper.service ? 查看狀態
admin.serverPort=8888指定了ZooKeeper的管理服務器端口。這個管理服務器提供了一個簡單的HTTP接口,用于獲取ZooKeeper服務的狀態和性能指標等信息。通過訪問這個端口,你可以獲取到ZooKeeper實例的各種管理信息,比如運行狀態、連接數、節點數量等。
默認情況下,ZooKeeper的管理界面并不提供一個全面的Web界面來瀏覽這些信息,而是提供了一個簡單的HTTP服務,通過發送HTTP請求到這個端口,可以獲取到JSON格式的狀態信息。
IP:8888/commands/stat
搭建Cloud項目
創建父項目,只做依賴版本管理
pom.xml
<!-- 統一管理jar包版本 --><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><junit.version>4.12</junit.version><log4j.version>1.2.17</log4j.version><lombok.version>1.16.18</lombok.version><mysql.version>5.1.47</mysql.version><druid.version>1.1.16</druid.version><mybatis.spring.boot.version>1.3.0</mybatis.spring.boot.version></properties><!-- 子模塊繼承之后,提供作用:鎖定版本+子modlue不用寫groupId和version --><dependencyManagement><dependencies><!--spring boot 2.2.2--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.2.2.RELEASE</version><type>pom</type><scope>import</scope></dependency><!--spring cloud Hoxton.SR1--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Hoxton.SR1</version><type>pom</type><scope>import</scope></dependency><!--spring cloud alibaba 2.1.0.RELEASE--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.1.0.RELEASE</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>${druid.version}</version></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>${mybatis.spring.boot.version}</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>${junit.version}</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>${log4j.version}</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version><optional>true</optional></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.2.2.RELEASE</version><configuration><fork>true</fork><addResources>true</addResources></configuration></plugin></plugins></build>
生產者模塊
pom.xml
<dependencies><!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-zookeeper-discovery --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-zookeeper-discovery</artifactId></dependency><!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-test --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies>
application.yml
server:port: 8081spring:application:name: cloud-provider-paymentcloud:zookeeper:connect-string: 222.22.22.2:2181
啟動類
業務類
按相同套路 再創建個8082
消費者模塊
依賴
<dependencies><!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-zookeeper-discovery --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-zookeeper-discovery</artifactId></dependency><!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-test --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies>
啟動類
業務類
配置類
雖然沒有直接引入Ribbon? Ribbon依賴通過以下依賴已經在了
?<dependency>
? ? ? ? ? ? <groupId>org.springframework.cloud</groupId>
? ? ? ? ? ? <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
</dependency>
application.yml
如何改變Ribbon負載均衡策略
啥意思??
就是要放在啟動類掃描不到的地方
重啟8083消費者? 可以自己多點點? ?現在是隨機的
如果需要恢復輪詢可以將啟動類上的@RibbonClient注釋掉
這樣即使MySlefRule這個類存在,也沒有效果? ?因為在啟動類所在包以外
Ribbon負載均衡原理
負載均衡算法:rest接口第幾次請求數%服務器集群總數量=實際調用服務器位置下標,每次服務重啟后Rest接口計數從1開始
上面 生產者總共2個實例
List? ?2個實例
index=1
1%2=1? ? 這個1? 做為list.get(1%2)
index變成2
2%2=0? ?這個0? 做為list.get(1%2)
index變成3
3%2=1? ?這個1? 做為list.get(3%2)
index變成4
4%2=0? ?這個0? 做為list.get(4%2)
以此類推