Contenu connexe
Similaire à SpringOne 2015 報告会 - Lattice + Spring Cloud Netflix (20)
SpringOne 2015 報告会 - Lattice + Spring Cloud Netflix
- 2. 2
PLATFORM AS A SERVICE
An exploratory look at Lattice as an example of a PaaS
- 9. Deploy to Lattice
Docker hubから
• Goで書かれた簡単なサンプル
アプリをデプロイ
• http://lattice-app.local.lattice.cfからアクセス
Docker hubにないプロジェクトをデ
プロイしたい場合はBuilding and
Launching Droplets
9
ltc create lattice-app cloudfoundry/lattice-app
- 10. Monitoring / Operations
• ログをtail
–
– lattice-appの各インスタンスのログを収集して表示する
• 稼働中のアプリを確認
–
• スケール(アップ・ダウン)
– #インスタンスを3つに変更
• アプリ詳細
–
10
ltc logs lattice-app
ltc list
ltc scale lattice-app 3
ltc status lattice-app
- 17. 目次
• サービスディスカバリ (Eureka)
• Client側ロードバランシング (Ribbon)
• サーキットブレーカー (Hystrix)
• ストリーム統合(Turbine)
• メトリックス
– Spectator
– Atlas
17
- 18. 18
サービスディスカバリ (Eureka)
• サービスディスカバリ (Eureka)
– Spring Boot + Netflix Eureka (by 谷本さん:@cero_t)
• Server
– Dependency org.springframework.cloud:spring-cloud-starter-eureka-server
– Annotation @EnableEurekaServer
• Client
– Dependency org.springframework.cloud:spring-cloud-starter-eureka
– Property eureka.client.serviceUrl.defaultZone: http://localhost:8761/eureka/
– Annotation @EnableEurekaClient / @EnableDiscoveryClient
- 20. 更に便利に使いましょう
• spring-cloud-netflix-contrib – 今後Spring Cloud Netflixに移行する予定の
Netflix OSS。
– Springの標準@EventListenerでステータス変更通知を受け取れる
– EurekaStatusChangedEvent
– RESTサービス以外にも便利
• 例えば、MessagingサービスがOUT_OF_SERVICEになった時、そこへのメッセージを止める
• EurekaはただのSpring Bootアプリなので好きなだけカスタマイズできる
– 自社の運用に便利なエンドポイントが追加できる
• EurekaサーバにHystrixのダッシュボードを追加したり、継続的デリバリー
との連携したり、メトリックスのダッシュボードなど
20
- 22. サーキットブレーカー (Hystrix)
• 障害し出したら関係するシステムまで影響し悪循環が始まる
– Hystrixを通して、問題があるシステムを呼ばず悪循環を止められる
• 注意:Exceptionが発生しても、正常時処理の代わりにできる
ことが特にないサービスは使えない(例:ペイメントサービス)
• 追加するのは簡単
– Dependency org.springframework.cloud:spring-cloud-starter-hystrix
– Annotation @EnableHystrix / @EnableCircuitBreaker
– 守りたいメソッドに @HystrixCommand(fallbackMethod = “myFallback”)
– myFallback(…)というフォールバックのメソッドを実装
22
- 23. Hystrix
• メソッドのtimeoutをコンフィグできる
– @HystrixProperty(name = “execution.isolation.thread.timeoutInMilliseconds”,
value = “5000”)
• 注意:@HystrixCommandは別のthread poolで実行される
– なので、デフォルトでThreadLocalなどを使ってはいけない
– @HystrixProperty(name = “execution.isolation.strategy”, value =
“SEMAPHORE”)
• これで解決できますが、@HystrixCommandが実行中にスレッドがブロックされます
• 日本語資料:NetflixのHystrixにも使われるCircuit Breaker patternを
調べてみた
23
- 26. Metrics
• Spectator
– Spring Cloud Netflixでの対応はBrixton.M3から
– Java 8+での使用、従来のメトリックス・ライブラリServoがdeprecated
– AutowiredでRegistryをインジェクト
– 使い方:
• 注意事項
– タグ名がユニークになるように作ってください。ユーザ名などを避けるべき
• そうしないとタグの数が爆発する恐れがある
• Spring Boot Actuatorの/metricsで見られます。
26
- 27. Atlas – メトリックス可視化
• Atlas
• URLでqueryを投げてグラフを表示をするという仕組み
• そのURLをすぐに共有できて、他の人も同じものが見れます
• 例えば
• 情報元
27
/api/v1/graph?
e=2012-01-01T00:00
&q=
name,sps,:eq,
nf.cluster,nccp-silverlight,:eq,
:and,
:sum