プロジェクトのアドレスについては、giteeにアクセスして、https: //gitee.com/xwb1056481167/spring-cloudをダウンロードして表示してください。
Nacos(動的命名および構成サービス)
- 中国語のヘルプドキュメント https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md
- https://nacos.io/zh-cn/index.html
主な機能:
サービスの現在の制限のダウングレード:デフォルトでは、WebServlet、WebFlux、OpenFeign、RestTemplate、Spring Cloud Gateway、Zuul、Dubbo、RocketMQの現在の制限のダウングレード機能へのアクセスをサポートしています。コンソールからリアルタイムで現在の制限のダウングレードルールを変更できます。実行時に、表示制限もサポートします。フロー劣化メトリックの監視。
サービスの登録と検出:Spring Cloudのサービスの登録と検出の標準に適合し、デフォルトでリボンサポートを統合します。
分散構成管理:分散システムでの外部構成をサポートし、構成が変更されると自動的に更新されます。
メッセージ駆動型機能:Spring CloudStreamに基づいてマイクロサービスアプリケーション用のメッセージ駆動型機能を構築します。
分散トランザクション:@GlobalTransactionalアノテーションを使用して、分散トランザクションの問題を効率的に解決し、ビジネスへの侵入をゼロにします。。
Alibaba Cloud Object Storage:Alibaba Cloudが提供する、大規模で安全、低コスト、信頼性の高いクラウドストレージサービス。あらゆる種類のデータをあらゆるアプリケーションで、いつでも、どこでも保存およびアクセスするためのサポート。
分散タスクスケジューリング:第2レベルの、正確で、信頼性が高く、可用性の高いタイミング(Cron式に基づく)タスクスケジューリングサービスを提供します。同時に、グリッドタスクなどの分散タスク実行モデルを提供します。グリッドタスクは、実行のためにすべてのワーカー(schedulerx-client)への海の量子タスクの均一な分散をサポートします。
Alibaba Cloudショートメッセージサービス:企業が顧客アクセスチャネルを迅速に構築するのに役立つ、フレンドリーで効率的かつインテリジェントな相互接続通信機能を備えたグローバルショートメッセージサービス。
Nacos = Eureka + Config + Bus
nacosのインストール
ダウンロードアドレス:https: //github.com/alibaba/nacos/releases1.1.4
ダウンロードアドレス
https://github.com/alibaba/nacos/releases/download/1.1.4/nacos-server-1.1.4.zip
https://github.com/alibaba/nacos/releases/download/1.1.4/nacos-server-1.1.4.tar.gz
ブラウザに次のアドレスを入力します
http:// localhost:8848 / nacos //ユーザー名パスワードnacos / nacos
プロジェクト統合Nacos
新しいcloudalibaba-provider-payment9001、cloudalibaba-provider-payment9002を作成し、以下に9001、9002、および9001を作成します。
まず、jarをプロジェクト全体のspring-cloudに統合します(または直接プロバイダーでバージョン番号を指定します)
<!-- SpringCloud alibaba -->
<dependencyManagement>
<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>
</dependencyManagement>
1.新しいサービスプロバイダーcloudalibaba-provider-payment9001,9002
1、pom.xml
<!-- alibaba nacos 服务端 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2、l配置
server:
port: 9001
spring:
application:
name: nacos-payment-provider
cloud:
nacos:
discovery:
server-addr: localhost:8848 #配置Nacos地址
management:
endpoints:
web:
exposure:
include: '*'
3.メインのスタートアップクラス
@SpringBootApplication
@EnableDiscoveryClient
public class PaymentMain9001 {
public static void main(String[] args) {
SpringApplication.run(PaymentMain9001.class, args);
}
}
4、コントローラー
@RestController
public class PaymentController {
@Value("\${server.port}")
private String serverPort;
@GetMapping(value = "/payment/nacos/{id}")
public String getPaymentById(@PathVariable("id") Long id) {
return "nacos registry ,serverPort: +" + serverPort + "\\t id " + id;
}
}
上記の9002と同じ9001の構築を完了します(ここでは省略)。
2.新しいサービスコンシューマーcloudalibaba-consumer-nacos-order83
1、pom.xml
<!-- alibaba nacos 服务端 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2、l
server:
port: 83
spring:
application:
name: nacos-payment-comsumer
cloud:
nacos:
discovery:
server-addr: localhost:8848 #配置Nacos地址
management:
endpoints:
web:
exposure:
include: '*'
#消费者将要去访问的微服务名称,(注册成功进nacos的微服务提供者)
service-url:
nacos-user-service: http://nacos-payment-provider
3.メインのスタートアップクラス
@SpringBootApplication
@EnableDiscoveryClient
public class NacosConsumerMain83 {
public static void main(String[] args) {
SpringApplication.run(NacosConsumerMain83.class, args);
}
}
4、restTemplate和コントローラー
//restTemplate类
@Configuration
public class ApplicationContextConfig {
@Bean
@LoadBalanced
public RestTemplate getRestTemplate() {
return new RestTemplate();
}
}
//controller
@RestController
@Slf4j
public class OrderNacosController {
@Resource
private RestTemplate restTemplate;
@Value("\${service-url.nacos-user-service}")
private String nacosUserService;
@GetMapping("/consumer/payment/nacos/{id}")
public String paymentInfo(@PathVariable("id") Long id) {
return restTemplate.getForObject(nacosUserService + "/payment/nacos/" + id, String.class);
}
}
テスト結果(更新、9001,9002ポーリングアクセス)
レジストリの比較
nacosでサポートされているAPとCP
を切り替える方法
curl -X PUT '\ $ NACOS_SERVER:8848 / nacos / v1 / ns / operator / switches?entry = serverMode&value = CP'
サービス登録と、Eureka、Zookeeper、Consulの3つの登録センター間の類似点と相違点の発見(CAP理論)
CAP理論の紹介
分散システムの基本理論として、CAP理論は次の3つの特徴で分散システムを説明します。
- 一貫性
- 可用性(可用性)
- パーティションの許容範囲
一貫性:分散システムが特定の書き込み操作を完了した後、すべての読み取り操作は、書き込み操作によって書き込まれた最新の値を取得する必要があります。これは、分散システム内のすべてのノードにデータの整合性を常に維持するように要求することと同じです。
可用性(可用性):読み取りおよび書き込み操作は、常に正常に実行できます。簡単に言えば、クライアントは常に正常にアクセスし、システムから正常な応答を得ることができます。ユーザーの観点からは、システム操作の失敗やアクセスタイムアウトなどの問題はありません。
パーティションの許容範囲:分散システムのノードまたはネットワークパーティションに障害が発生した場合でも、システム全体で一貫性と可用性を満たす外部サービスを提供できます。つまり、部分的な障害は全体的な使用に影響を与えません。実際、分散システムを設計する際には、バグ、ハードウェア、ネットワークなどによる障害を考慮します。そのため、一部のノードやネットワークに障害が発生した場合でも、システム全体を継続して使用する必要があります(継続して使用しない、同等toパーティションは1つしかないため、その後の一貫性と可用性はありません)
最大で2つの条件を同時に満たすことができます(理由については、https://www.cnblogs.com/zhuyeshen/p/11720655.htmlを参照してください)。
CAP理論の中核は、分散システムが整合性、可用性、パーティションフォールトトレランスの3つの要件を同時に満たすことはできないということです。したがって、CAPの原則に従って、NoSQLデータベースはCAの原則を満たす3つのカテゴリに分類されます。 、CP、およびAP 。:
それ
一貫性と可用性を満たすシステムであるシングルポイントクラスターは、通常、スケーラビリティが高くありません。
CP
一貫性とパーティションのフォールトトレランスを満たすシステムは、通常、パフォーマンスが特に高くありません。
AP
可用性とパーティションのフォールトトレランスを満たすシステムでは、通常、整合性の要件が低くなる可能性があります。
コンポーネント名 | 言語 | キャップ | サービス監視チェック | 外部に公開されたインターフェース | SpringCloud統合 |
---|---|---|---|---|---|
ユーレカ | java | AP | サポートを装備することができます | http | 統合 |
領事 | 行く | CP | 待機する | http:DNS | 統合 |
動物園の飼育係 | java | CP | 待機する | クライアント | 統合 |