Microservices Security Example #1 - Eureka Discovery Server haqqında danışırıq

Eureka Discovery Server

Eureka Server nədir və nə üçün istifadə olunur suallarının cavabını internetdə axtarıb daha geniş məlumat tapmaq olar. Bu yazıda yalnız praktikasına fokuslanacağıq. Qısa məlumat olaraq,

Spring Cloud Netflix Eureka, servislerin makina adı ve bağlantı noktasına ihtiyaç olmaksızın birbirleriyle iletişim kurmasını sağlar. Bu mimarideki tek önemli nokta, her servisin kayıt olması gereken bir servis olmasıdır.

Ətraflı  

Eureka Server yaratmaq standart prosedurdur. http://start.spring.io/ keçid edərək yarada bilərik.

Bu application-da istifadə olunan versiyalar:

1. spring-boot-starter-parent (2.3.8.RELEASE)

2. spring-cloud.version (Hoxton.SR9)

Bu versiyaların istifadə məqsədi bundan ibarətdir ki, spring-boot 2.4.X versiyalarda spring-cloud yeni versiyanı işlətmək lazımdır (2020.0.0). Spring Cloud bu versiyada Zuul, Ribbon dəstəkləmir. Gateway kimi Spring Cloud Gateway istifadə etməyi məsləhət görülür. Sadəcə bu arxitekturada Zuul istifadə etdiyimə görə köhnə versiyada işlətməyə məcbur oldum. Digər postlarda Spring Cloud Gateway - lə də example gələcək


İlk baxacağımız yer Main class-dır. Burada sadəcə EnableEurekaServer annotation yazmağımız kifayətdir. Artıq Application Eureka Server kimi run olunacaq. 

http://localhost:8761/ 
daxil olduqda, Eureka Server haqqında olan məlumatları görmək olar



Eureka Server-də olan application.yml (rahat olsun deyə .yml istifadə edirəm. Bu .properties faylı da ola bilər) haqqında danışaq:


Burada Eureka Serverin hansı portda run olmasını qeyd eləmişik. Bundan əlavə bəzi configuration-lar aparılıb. Bu configuration-lar haqqında danışmazdan qabaq, bəzi məqamlara nəzər yetirək.

Ümümiyyətlə hər hansısa service in kəşfedilə bilən (discoverable) olması üçün Eureka Server də qeydiyyatdan keçməlidir. Eureka Server də özü də bir service-dir. 

Bunları nəzərdə saxlayaraq, qaldığımız yerə baxsaq, 
register-with-eureka parameteri false olduğunu görərik. Niyə false olmasını hələllik kənara qoyaq. Bu parametr Eureka Server e client olan servicelər üçündür. Yəni, düşünək bir auth-service var. İstəyirik ki, bu service Eureka Server-də register olsun (Ətraflı). Bunun üçün həmin service də bu parameteri true dəyərini verməliyik. Belə bir hal da var ki, qeyd eləməsək belə bu parameterin dəyəri default olaraq true qalır.

İndi qayıdaq niyə bu parameterə Eureka Server in özündə false dəyəri veririk. Əslində səbəbi anlaşılandır, Eureka Server özü özünə client ola bilər. Özünə client ola bilər deyərkən, özünü özündə register edə bilər. Bunun qarşısını almaq üçün register-with-eureka parameterinə false dəyəri veririk.

Bu parameterə true verib test edə bilərik. 

Bunun üçün ilk öncə yeni parameter əlavə edirik (spring.application.name) və register-with-eureka parameterin dəyərini true edirik. 

Application-u run etdikdən sonra http://localhost:8761/ daxil oluruq,


və bu hissədə görürük ki, Eureka Server özünü də qeydiyyatdan keçirib. Buna görə sözü gedən parameterə false dəyərini verməliyik. 

Artıq (spring.application.name) parameterini silib, register-with-eureka parameterin dəyərini false edə bilərik.

Növbəti parameter (fetch-registry) isə register olan bir service in digər register olan service-ləri istifadə edə bilməsi üçündür. Bu da Eureka-Server daxilində false olmalıdır. (default dəyər true-dur)

Comments

Popular posts from this blog

Validation for AZ phone numbers with RegEx in Java

Java necə işləyir, kod nədir ?

@Transactional annotation haqqinda. Cascade istifade olunmasi