記事ディレクトリ
概要
Nacos: 動的ネーミングおよび構成サービス
Nacos = Eureka+Config +Bus
Nacos は、登録センター + 構成センターの組み合わせであり、
クラウド ネイティブ アプリケーションの構築を容易にする動的なサービス検出、構成管理、およびサービス管理プラットフォームです。
公式サイト
https://github.com/alibaba/Nacos
https://nacos.io/zh-cn/index.html
https://spring-cloud-alibaba-group.github.io/github-pages/greenwich/春 -cloud-alibaba.html#_spring_cloud_alibaba_nacos_discovery
登録センター
POM
親モジュール
<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>
このモジュール
<!--SpringCloud ailibaba nacos -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
YML
server:
port: 9001
spring:
application:
name: nacos-payment-provider
cloud:
nacos:
discovery:
server-addr: localhost:8848 #配置Nacos地址
management:
endpoints:
web:
exposure:
include: '*'
スタートアップクラス
@EnableDiscoveryClient
キャップ
C は、すべてのノードが同時に見るデータが一貫していることを意味し、A の定義は、すべてのリクエストが応答を受け取ることです。
どのモードを使用するかをいつ選択しますか?
一般に、
サービス レベル情報を保存する必要がなく、サービス インスタンスが nacos-client を通じて登録され、ハートビート レポートを維持できる場合は、AP モードを選択できます。Spring クラウドや Dubbo サービスなど、現在主流のサービスはすべて AP モードに適していますが、AP モードではサービスの可能性を考慮して一貫性が弱くなるため、AP モードは一時的なインスタンスの登録のみをサポートします。
サービス レベルで構成情報を編集または保存する必要がある場合は、CP が必要です。K8S サービスと DNS サービスは CP モードに適しています。
CP モードは永続インスタンスの登録をサポートしています。このとき、Raft プロトコルはクラスターの動作モードとして使用されます。このモードでは、インスタンスを登録する前にサービスを登録する必要があります。サービスが存在しない場合は、エラーが返されます。 。
curl -X PUT '$NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP'
構成センター
POM
<!--nacos-config-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!--nacos-discovery-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
YML
Nacos は springcloud-config と同じです。プロジェクトを初期化するときは、まず構成センターから構成をプルする必要があります。構成を
プルした後でのみ、プロジェクトの正常な起動が保証されます。
スプリングブートでの設定ファイルのロードには優先順位があり、ブートストラップはアプリケーションよりも優先されます。
#bootstrap
# nacos配置
server:
port: 3377
spring:
application:
name: nacos-config-client
cloud:
nacos:
discovery:
server-addr: localhost:8848 #Nacos服务注册中心地址
config:
server-addr: localhost:8848 #Nacos作为配置中心地址
file-extension: yaml #指定yaml格式的配置
spring:
profiles:
active: dev # 表示开发环境
スタートアップクラス
@EnableDiscoveryClient
ConfigClientController
@RefreshScope //在控制器类加入@RefreshScope注解使当前类下的配置支持Nacos的动态刷新功能。
public class ConfigClientController
{
@Value("${config.info}")
private String configInfo;
@GetMapping("/config/info")
public String getConfigInfo() {
return configInfo;
}
}
ナコスのマッチングルール
${
spring.application.name}-${
spring.profiles.active}.${
spring.cloud.nacos.config.file-extension}
構成をロードするための 3 つのオプション
- データIDスキーム
- グループプラン
- 名前空間スキーム
三人の関係は
例
ブートストラップ.yml
server:
port: 3377
spring:
application:
name: nacos-config-client
cloud:
nacos:
discovery:
server-addr: localhost:8848 #Nacos服务注册中心地址
config:
server-addr: localhost:8848 #Nacos作为配置中心地址
file-extension: yaml #指定yaml格式的配置
group: DEV_GROUP
namespace: 7d8f0f5a-6a53-4785-9686-dd460158e5d4
アプリケーション.yml
spring:
profiles:
active: dev # 表示开发环境
#active: test # 表示测试环境
#active: info
スタートアップクラス
@EnableDiscoveryClient
@SpringBootApplication
public class NacosConfigClientMain3377
{
public static void main(String[] args) {
SpringApplication.run(NacosConfigClientMain3377.class, args);
}
}
クラスターの展開
概要
公式 Web サイト:
https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html
公式 Web サイトのアーキテクチャ図 実際のモードには、
デフォルトで組み込みデータベース derby が付属しています
https://github.com/alibaba /nacos /blob/develop/config/pom.xml
展開モード
- スタンドアロン モード - テスト用
- クラスターモード - 高可用性
- マルチクラスターモード - 複数のデータセンター
derbyをmysqlに変更する
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=123456
構成
クラスタ.conf
この IP を 127.0.0.1 として書き込むことはできません。Linux コマンド hostname -i で認識できる IP である必要があります。
Nacos 起動スクリプトのstartup.sh を編集して、別の起動ポートを受け入れられるようにします。
./startup.sh -p 3333 は、ポート番号 3333 で nacos サーバー インスタンスを起動することを意味します。これは、前の手順のcluster.conf 構成と一致します。
Nginx 構成 (ロードバランサーとして使用)
upstream cluster{
server 127.0.0.1:3333;
server 127.0.0.1:4444;
server 127.0.0.1:5555;
}
server {
listen 1111;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
#root html;
#index index.html index.htm;
proxy_pass http://cluster;
}
.......省略
現時点では、1 Nginx + 3 nacos 登録センター + 1 mysql
テスト
yml
server:
port: 9002
spring:
application:
name: nacos-payment-provider
cloud:
nacos:
discovery:
#配置Nacos地址
#server-addr: localhost:8848
# 换成nginx的1111端口,做集群
server-addr: 192.168.111.144:1111
management:
endpoints:
web:
exposure:
include: '*'