en
Feedback

Don't get caught by a cheater! Telemetrio finds and tags such channels πŸ‘‰ If you want to see the tag, subscribe

Java Portal | ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Java Portal | ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Open in Telegram

ΠŸΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ ΠΊΠ°Π½Π°Π»Ρƒ ΠΈ ΠΏΠΎΠ³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ΡΡŒ Π² ΠΌΠΈΡ€ для Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Бвязь: @devmangx РКН: https://clck.ru/3H4WUg

Show more

πŸ“ˆ Analytical overview of Telegram channel Java Portal | ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Channel Java Portal | ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (@java_iibrary) in the Russian language segment is an active participant. Currently, the community unites 11 920 subscribers, ranking 10 472 in the Technologies & Applications category and 53 940 in the Russia region.

πŸ“Š Audience metrics and dynamics

Since its creation on Π½Π΅Π²Ρ–Π΄ΠΎΠΌΠΎ, the project has demonstrated rapid growth, gathering an audience of 11 920 subscribers.

According to the latest data from 26 October, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by 288 over the last 30 days and by 14 over the last 24 hours, overall reach remains high.

  • Verification status: Not verified
  • Engagement rate (ER): The average audience engagement rate is 10.39%. Within the first 24 hours after publication, content typically collects 6.42% reactions from the total number of subscribers.
  • Post reach: On average, each post receives 1 239 views. Within the first day, a publication typically gains 766 views.
  • Reactions and interaction: The audience actively supports content: the average number of reactions per post is 3.
  • Thematic interests: Content is focused on key topics such as boot, string, void, Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°, resttemplate.

πŸ“ Description and content policy

The author describes the resource as a platform for expressing subjective opinions:
β€œΠŸΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ ΠΊΠ°Π½Π°Π»Ρƒ ΠΈ ΠΏΠΎΠ³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ΡΡŒ Π² ΠΌΠΈΡ€ для Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Бвязь: @devmangx РКН: https://clck.ru/3H4WUg”

Thanks to the high frequency of updates (latest data received on 27 October, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.

11 920
Subscribers
+1424 hours
+617 days
+28830 days
Posts Archive
АрхитСктура Docker Если Π²Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Docker, эта схСма ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ слоТной. Но Π½Π° самом Π΄Π΅Π»Π΅ всё устро
АрхитСктура Docker Если Π²Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Docker, эта схСма ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ слоТной. Но Π½Π° самом Π΄Π΅Π»Π΅ всё устроСно довольно просто. Π’Ρ‹ Π²Π²ΠΎΠ΄ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:
docker run nginx
Docker Client отправляСт эту ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Docker Daemon, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСт всю ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅. Если Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Π° (Image) Π΅Ρ‰Π΅ Π½Π΅Ρ‚ Π½Π° вашСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, Docker Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Π΅Π³ΠΎ ΠΈΠ· Docker Registry, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ· Docker Hub. ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΎΠ±Ρ€Π°Π· становится доступСн локально, Docker создаСт ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ (Container) β€” Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΉ экзСмпляр этого ΠΎΠ±Ρ€Π°Π·Π°. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ это Ρ‚Π°ΠΊ: - Image (ΠΎΠ±Ρ€Π°Π·) = Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π΄ΠΎΠΌΠ°. - Container (ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€) = настоящий Π΄ΠΎΠΌ, построСнный ΠΏΠΎ этому ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ. ИмСнно Ρ‚Π°ΠΊ выглядит Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Docker:
Π’Ρ‹
   β”‚
   β–Ό
Docker Client
   β”‚
   β–Ό
Docker Daemon
   β”‚
   β–Ό
Docker Image
   β”‚
   β–Ό
Docker Container
Когда Π²Ρ‹ ΠΏΠΎΠΉΠΌΠ΅Ρ‚Π΅ эту ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, устройство Docker станСт Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ ΠΈ понятнСС. πŸ‘‰ Java Portal

FastAPI с Ρ‚Ρ€Ρ‘Ρ…ΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ Π² стилС Java: слои controller, service, crud, schema ΠΈ model, ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°ΠΌΠΈ Spring Boot. Π’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ SQLAlchemy 2.0, Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° Π±Π°Π·Π΅ Casbin ΠΈ Docker. https://github.com/fastapi-practices/fastapi-best-architecture πŸ‘‰ Java Portal

Π‘ΠΎΠ·Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π²ΠΎΠΊΠ»Π°ΡΡΠ½ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ для своСго API ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Starlight ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ всё Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅: Π²Ρ‹ΡΠΎΠΊΡƒΡŽ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ благодаря Astro, Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ для SEO, Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ ΠΈ поиск, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Markdown, MDX ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… языков. β†’ http://starlight.astro.build/es πŸ‘‰ Java Portal

Java: Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Deque вмСсто Stack для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ стСка (LIFO β€” last in, first out, «послСдним ΠΏΡ€ΠΈΡˆΡ‘Π» β€” ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π²Ρ‹ΡˆΠ΅Π»Β»). βœ… S
Java: Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Deque вмСсто Stack для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ стСка (LIFO β€” last in, first out, «послСдним ΠΏΡ€ΠΈΡˆΡ‘Π» β€” ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π²Ρ‹ΡˆΠ΅Π»Β»). βœ… Stack β€” это ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΉ класс. Он наслСдуСтся ΠΎΡ‚ Vector ΠΈ синхронизируСт ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ. βœ… Deque ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚Π΅ ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹: push, pop ΠΈ peek. βœ… ArrayDeque Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ быстрСС, Ρ‡Π΅ΠΌ Stack. #JavaDev πŸ‘‰ Java Portal

πŸ‡·πŸ‡Ί Π Π°Π·Π±ΠΈΡ€Π°Π΅ΡˆΡŒΡΡ Π² Ρ€Π°Π΄ΠΈΠΎΡ‡ΠΈΠΏΠ°Ρ…, ΠΎΠΏΡ‚ΠΈΠΊΠ΅ ΠΈ связи? Π—Π°Π±Π΅Ρ€ΠΈ Π΄ΠΎ 1 000 000 Ρ€ΡƒΠ±Π»Π΅ΠΉ Π·Π° свои ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π½Ρ‹Π΅ Π½Π°Π²Ρ‹ΠΊΠΈ Π½Π° Ρ‚ΡƒΡ€Π½ΠΈΡ€Π΅ Β«Π”Ρ€ΠΎΠ½ΠΊΠΎΠ½Β» πŸ‡·οΏ½
πŸ‡·πŸ‡Ί Π Π°Π·Π±ΠΈΡ€Π°Π΅ΡˆΡŒΡΡ Π² Ρ€Π°Π΄ΠΈΠΎΡ‡ΠΈΠΏΠ°Ρ…, ΠΎΠΏΡ‚ΠΈΠΊΠ΅ ΠΈ связи? Π—Π°Π±Π΅Ρ€ΠΈ Π΄ΠΎ 1 000 000 Ρ€ΡƒΠ±Π»Π΅ΠΉ Π·Π° свои ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π½Ρ‹Π΅ Π½Π°Π²Ρ‹ΠΊΠΈ Π½Π° Ρ‚ΡƒΡ€Π½ΠΈΡ€Π΅ Β«Π”Ρ€ΠΎΠ½ΠΊΠΎΠ½Β» πŸ‡·πŸ‡Ί «БталинскиС Π‘ΠΎΠΊΠΎΠ»Ρ‹Β» ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ Π½Π° 4-ΠΉ ВсСроссийский Ρ‚ΡƒΡ€Π½ΠΈΡ€ Β«Π”Ρ€ΠΎΠ½ΠΊΠΎΠ½Β», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΎΠΉΠ΄Π΅Ρ‚ с 22 ΠΏΠΎ 26 августа. Π’ΡƒΡ€Π½ΠΈΡ€ ΠΏΡ€ΠΎΠΉΠ΄Π΅Ρ‚ ΠΏΠΎ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ: - Π˜Π½ΠΆΠ΅Π½Π΅Ρ€Π½ΠΎΠ΅ Π΄Π΅Π»ΠΎ: Π½Π°Π²Ρ‹ΠΊΠΈ программирования, сборка элСктронного оборудования, бСспроводная связь, оптичСскиС систСмы + стратСгия Β«Π‘ΠΈΡ‚Π²Π° Π”Ρ€ΠΎΠ½ΠΎΠ²Β»; ΠŸΡ€ΠΈΠ·ΠΎΠ²ΠΎΠΉ Ρ„ΠΎΠ½Π΄ для ΠΏΠΎΠ±Π΅Π΄ΠΈΡ‚Π΅Π»Π΅ΠΉ: πŸ₯‡ΠΌΠ΅ΡΡ‚ΠΎ – 1 000 000 Ρ€ΡƒΠ±Π»Π΅ΠΉ πŸ₯ˆΠΌΠ΅ΡΡ‚ΠΎ – 700 000 Ρ€ΡƒΠ±Π»Π΅ΠΉ πŸ₯‰ΠΌΠ΅ΡΡ‚ΠΎ – 500 000 Ρ€ΡƒΠ±Π»Π΅ΠΉ Награда Π·Π° 4-8 мСста - 100 000 Ρ€ΡƒΠ±Π»Π΅ΠΉ ΠŸΡ€ΠΎΠΉΠ΄ΠΈ Π·Π°ΠΎΡ‡Π½Ρ‹ΠΉ ΠΎΠ½Π»Π°ΠΉΠ½-этап ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠΏΡƒΡ‚Π΅Π²ΠΊΡƒ Π½Π° ΠΎΡ‡Π½Ρ‹ΠΉ этап Ρ‚ΡƒΡ€Π½ΠΈΡ€Π° Π² РСспублику Ватарстан! ΠŸΠ΅Ρ€Π΅Π»Π΅Ρ‚, ΠΏΠΈΡ‚Π°Π½ΠΈΠ΅, ΠΏΡ€ΠΎΠΆΠΈΠ²Π°Π½ΠΈΠ΅ - Π·Π° счСт ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ². πŸ‡·πŸ‡Ί ΠŸΠΎΠ΄Π°Ρ‚ΡŒ заявку ΠΈ ΡƒΠ·Π½Π°Ρ‚ΡŒ подробности πŸ‡·πŸ‡Ί

ΠœΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ стратСгии ΡˆΠ°Ρ€Π΄ΠΈΠ½Π³Π° β€” простоС объяснСниС с ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡΠΌΠΈ По ΠΌΠ΅Ρ€Π΅ роста прилоТСния ΠΈΠ»ΠΈ систСмы Π±Π°
ΠœΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ стратСгии ΡˆΠ°Ρ€Π΄ΠΈΠ½Π³Π° β€” простоС объяснСниС с ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡΠΌΠΈ По ΠΌΠ΅Ρ€Π΅ роста прилоТСния ΠΈΠ»ΠΈ систСмы Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚ΠΎΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒΡΡ с ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉΡΡ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ. НиТС β€” ΠΎΠ±Π·ΠΎΡ€ основных стратСгий. 1. Π“ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (Horizontal Scaling) Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… сСрвСров для распрСдСлСния Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ увСличСния ΠΎΠ±Ρ‰Π΅ΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π±Π΅Π· ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ сСрвСра. 2. Π’Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (Vertical Scaling) Π£Π²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ рСсурсов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ сСрвСра β€” процСссора, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти ΠΈΠ»ΠΈ дискового пространства β€” Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ ΠΌΠΎΠ³ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ большС запросов. 3. Π‘Ρ‚Ρ€Π°Ρ‚Π΅Π³ΠΈΠΈ партиционирования (Partition Strategies) ЛогичСскоС Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ большой Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° части (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ€Π΅Π³ΠΈΠΎΠ½Ρƒ ΠΈΠ»ΠΈ Ρ‚ΠΈΠΏΡƒ Π΄Π°Π½Π½Ρ‹Ρ…), Ρ‡Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ ускоряСт доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ. 4. Π¨Π°Ρ€Π΄ΠΈΠ½Π³ ΠΏΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°ΠΌ (Range-Based Sharding) Π”Π°Π½Π½Ρ‹Π΅ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ ΡˆΠ°Ρ€Π΄Π°ΠΌΠΈ ΠΏΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎ Ρ†Π΅Π½Π΅, Π΄Π°Ρ‚Π΅ ΠΈΠ»ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρƒ), Ρ‡Ρ‚ΠΎ ускоряСт поиск ΠΏΠΎ Ρ‚Π°ΠΊΠΈΠΌ полям. 5. Π Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ΅ распрСдСлСниС Π΄Π°Π½Π½Ρ‹Ρ… (Even Distribution) Нагрузка Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ распрСдСляСтся ΠΌΠ΅ΠΆΠ΄Ρƒ всСми сСрвСрами, Ρ‡Ρ‚ΠΎ позволяСт максимально эффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ рСсурсы ΠΈ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ ΡƒΠ·ΠΊΠΈΡ… мСст. 6. НСравномСрноС распрСдСлСниС Π΄Π°Π½Π½Ρ‹Ρ… (Uneven Distribution) Нагрузка распрСдСлСна Π½Π΅Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ: ΠΎΠ΄Π½ΠΈ сСрвСры ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Ρ‹, Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ практичСски ΠΏΡ€ΠΎΡΡ‚Π°ΠΈΠ²Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ сниТаСт ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ всСй систСмы. 7. Π¨Π°Ρ€Π΄ΠΈΠ½Π³ ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ (Key-Based Sharding) Для распрСдСлСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ ΡˆΠ°Ρ€Π΄Π°ΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ…Π΅Ρˆ-функция, которая обСспСчиваСт ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠ΅ ΠΈ Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ΅ распрСдСлСниС записСй. 8. ΠœΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ чтСния (Scaling Reads) Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ€Π΅ΠΏΠ»ΠΈΠΊ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния (Read Replicas), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ большоС количСство запросов ΠΈ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…. 9. ΠœΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½Π°Ρ Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… vs ΡˆΠ°Ρ€Π΄ΠΈΠ½Π³ (Monolith vs Sharding) ВмСсто ΠΎΠ΄Π½ΠΎΠΉ большой ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½ΠΎΠΉ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Π΅ Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π½Π° логичСскиС ΡˆΠ°Ρ€Π΄Ρ‹. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ систСмы, ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡŽ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Π­Ρ‚ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ основой проСктирования ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… систСм ΠΈ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ высоконагруТСнных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ΅ ΠΊ тСхничСским собСсСдованиям ΠΏΠΎ System Design. πŸ‘‰ Java Portal

ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π² Java ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΎΡ†Π΅Π½ΠΊΠΈ 100 студСнтов. НСуТСли Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ 100 ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…?
ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π² Java ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΎΡ†Π΅Π½ΠΊΠΈ 100 студСнтов. НСуТСли Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ 100 ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…?
int mark1;
int mark2;
int mark3;
...
ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π΅Ρ‚. ИмСнно для этого ΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ массивы. Массив позволяСт Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ нСсколько Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ массив? Массив β€” это коллСкция элСмСнтов фиксированного Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, располоТСнных Π² Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ области памяти.
int[] scores = {10, 20, 30, 40, 50};
ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт опрСдСляСтся своим индСксом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ начинаСтся с 0.
ИндСкс  : 0   1   2   3   4
Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅:10  20  30  40  50
БозданиС массива - ОбъявлСниС
int[] numbers;
- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅
numbers = new int[5];
- ОбъявлСниС и созданиС
int[] numbers = new int[5];
Или ΠΌΠΎΠΆΠ½ΠΎ сразу ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив:
int[] numbers = {10, 20, 30, 40, 50};
ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ - Доступ ΠΊ элСмСнту
System.out.println(numbers[2]);   // 30
- ИзмСнСниС элСмСнта
numbers[1] = 25;
- ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ‹ массива
numbers.length
- ΠŸΠ΅Ρ€Π΅Π±ΠΎΡ€ массива
for (int i = 0; i < numbers.length; i++) {
    System.out.println(numbers[i]);
}
Π’Π°ΠΆΠ½Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ - Π Π°Π·ΠΌΠ΅Ρ€ массива фиксирован. - Π˜Π½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡ всСгда начинаСтся с 0. - ВсС элСмСнты массива Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…. - ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² автоматичСски Π·Π°ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ значСниями ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. НапримСр:
int[] arr = new int[3];
ЗначСния элСмСнтов Π±ΡƒΠ΄ΡƒΡ‚ Ρ‚Π°ΠΊΠΈΠΌΠΈ:
0 0 0
- Π‘ΠΎΠ²Π΅Ρ‚ для собСсСдований Π§Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ Π² этом случаС?
int[] arr = {10, 20, 30};

System.out.println(arr[3]);
❌ Π‘ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π±Ρ€ΠΎΡˆΠ΅Π½ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ArrayIndexOutOfBoundsException. ΠŸΠΎΡ‡Π΅ΠΌΡƒ? ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ допустимыС индСксы:
0, 1, 2
ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ индСксу, выходящСму Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ массива, ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ возникновСнию ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠœΠ°ΡΡΠΈΠ²Ρ‹ β€” ΠΎΠ΄Π½Π° ΠΈΠ· самых Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… структур Π΄Π°Π½Π½Ρ‹Ρ… Π² Java. Π₯ΠΎΡ€ΠΎΡˆΠ΅Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ ArrayList, Collections, Stack, Queue, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ Π½Π° тСхничСских собСсСдованиях. πŸ‘‰ Java Portal

Π’ PostgreSQL varchar(255) Π²Π΅Π΄Ρ‘Ρ‚ сСбя Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ столбСц Ρ‚ΠΈΠΏΠ° text; СдинствСнноС ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ β€” Ρƒ varchar Π΅ΡΡ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π»ΠΈΠ½
Π’ PostgreSQL varchar(255) Π²Π΅Π΄Ρ‘Ρ‚ сСбя Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ столбСц Ρ‚ΠΈΠΏΠ° text; СдинствСнноС ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ β€” Ρƒ varchar Π΅ΡΡ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π»ΠΈΠ½Ρƒ. Π’ΠΈΠΏ varchar(n) всСгда Ρ€Π°Π±ΠΎΡ‚Π°Π» ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ. Если Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π² PostgreSQL столбСц varchar(255), Ρ‚ΠΎ Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ это ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ сначала Ρ€Π°Π±ΠΎΡ‚Π°Π» с Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π‘Π£Π‘Π” ΠΈ пСрСнёс свои ΠΏΡ€Π΅ΠΆΠ½ΠΈΠ΅ прСдставлСния ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ varchar(n). Когда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ text, Π° ΠΊΠΎΠ³Π΄Π° varchar? Если Π΅ΡΡ‚ΡŒ бизнСс-Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ значСния ΠΈΠ»ΠΈ столбСц индСксируСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ B-tree, стоит Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ varchar(n). Если Ρ‚Π°ΠΊΠΎΠ³ΠΎ трСбования Π½Π΅Ρ‚ β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ text ΠΈ Π½Π΅ Π΄ΡƒΠΌΠ°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚Π΅ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ PostgreSQL говорится:
Π₯отя Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… Π‘Π£Π‘Π” Ρ‚ΠΈΠΏ character(n) ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ прСимущСства ΠΏΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π² PostgreSQL Ρ‚Π°ΠΊΠΈΡ… прСимущСств Π½Π΅Ρ‚. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, character(n)
ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ являСтся самым ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌ ΠΈΠ· Ρ‚Ρ€Ρ‘Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² ΠΈΠ·-Π·Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Ρ‚Ρ€Π°Ρ‚ Π½Π° Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв вмСсто Π½Π΅Π³ΠΎ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ text ΠΈΠ»ΠΈ character varying
ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ varchar(n) Π½Π° text Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ стоит? ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это всСго лишь ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…. ЀизичСскоС Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Ρƒ этих Ρ‚ΠΈΠΏΠΎΠ² ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅. ΠœΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ хранятся Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ pg_attribute, поэтому ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° сводится ΠΊ обновлСнию записи Π² этой Ρ‚Π°Π±Π»ΠΈΡ†Π΅. Π‘Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, поэтому Π½Π΅ трСбуСтся Π½ΠΈ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, Π½ΠΈ ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ хранСния. А Π²ΠΎΡ‚ с char всё ΠΈΠ½Π°Ρ‡Π΅ ΠŸΡ€ΠΈ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ с char Π½Π° text для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ значСния выполняСтся rtrim, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ нСявноС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ char ΠΊ text автоматичСски удаляСт Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹. Π­Ρ‚ΠΎ ΡƒΠΆΠ΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ затратная опСрация, Ρ‡Π΅ΠΌ простоС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…, поэтому PostgreSQL приходится ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ. Как PostgreSQL Ρ…Ρ€Π°Π½ΠΈΡ‚ строки. PostgreSQL ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ хранСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹ для всСх строковых Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…. Π”Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π»ΠΈΠ±ΠΎ нСпосрСдствСнно Π² строкС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ (inline), Π»ΠΈΠ±ΠΎ с использованиСм ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° TOAST (The Oversized-Attribute Storage Technique), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° сТатиС ΠΈ вынСсСниС Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ основной Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ TOAST Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ, ΠΊΠΎΠ³Π΄Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ строки ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ 2 ΠšΠ‘. И varchar(n), ΠΈ text ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ хранСния, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ TOAST. Когда Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ стоит ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ varchar(n)? Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ varchar(n), ΠΊΠΎΠ³Π΄Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ‹ β€” это бизнСс-ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сама Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…. НапримСр:
country_code   varchar(2),  -- ISO 3166-1
currency_code  varchar(3),  -- ISO 4217
us_zip_code    varchar(5),  -- 5 Ρ†ΠΈΡ„Ρ€
sku            varchar(20), -- ограничСния Π²Π½Π΅ΡˆΠ½ΠΈΡ… систСм
Π‘Ρ‚ΠΎΠΈΡ‚ Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ varchar для country_code ΠΈ currency_code? ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ. ΠœΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½Ρ‹Π΅ стандарты Тёстко ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Π΄Π»ΠΈΠ½Ρƒ этих ΠΊΠΎΠ΄ΠΎΠ². Для SKU ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΈΠΊΡ‚ΠΎΠ²Π°Ρ‚ΡŒΡΡ внСшними трСбованиями. Π§Ρ‚ΠΎ касаСтся us_zip_code, Ρ‚ΠΎ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Π½Π΅Ρ€Π΅Π΄ΠΊΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ZIP+4. Π‘ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ Ρ‚Π°ΠΊΠΈΠ΅ столбцы Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Ρ‹ Π² postal_code, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΌΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½Ρ‹Π΅ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹Π΅ индСксы. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях varchar ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ обСспСчиваСт ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅, ΠΈ Π΄ΠΎΡΡ‚Π°Ρ‚ΠΎΡ‡Π½ΡƒΡŽ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ. ΠŸΡ€ΠΎΡ‰Π΅ говоря, varchar ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ соблюдСниС бизнСс-ΠΏΡ€Π°Π²ΠΈΠ». Π˜Π½Π΄Π΅ΠΊΡΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ столбцы? РассмотритС varchar(n) Π‘Π°ΠΌΠΎ ΠΏΠΎ сСбС индСксированиС столбцов Ρ‚ΠΈΠΏΠ° text Π½Π΅ являСтся ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π΅ΡΡ‚ΡŒ нюанс. varchar(n) ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π·Π°Ρ‰ΠΈΡ‚ΠΎΠΉ для индСксируСмых столбцов (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли username ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π΅ просто ΠΊΠ°ΠΊ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠ΅ имя, Π° для поиска, Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈΠ»ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ профиля). ΠŸΠΎΡ‡Π΅ΠΌΡƒ? ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ PostgreSQL Π½Π΅ смоТСт ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ запись Π² B-tree-индСксС, Ссли Π΅Ρ‘ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ 2704 Π±Π°ΠΉΡ‚Π°. На самом Π΄Π΅Π»Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ распространяСтся Π½Π΅ Π½Π° исходный Ρ€Π°Π·ΠΌΠ΅Ρ€ строки, Π° Π½Π° Π΅Ρ‘ сТатый Ρ€Π°Π·ΠΌΠ΅Ρ€, поэтому Π½Π°Π·Π²Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΉ ΠΏΡ€Π΅Π΄Π΅Π» Π² символах Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ: Ρ€Π°Π·Π½Ρ‹Π΅ строки ΡΠΆΠΈΠΌΠ°ΡŽΡ‚ΡΡ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ. ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ‹ Ρ‡Π΅Ρ€Π΅Π· varchar(n) позволяСт ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ пытаСтся ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. πŸ‘‰ Java Portal

πŸ’‘ Switch-выраТСния Π² Java: большС Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ break, Π° компилятор сам слСдит Π·Π° Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ Π½Π΅ Π·Π°Π±Ρ‹Π»ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½ΠΈ ΠΎΠ΄
πŸ’‘ Switch-выраТСния Π² Java: большС Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ break, Π° компилятор сам слСдит Π·Π° Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ Π½Π΅ Π·Π°Π±Ρ‹Π»ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ случай. βœ… По ΠΎΠ΄Π½ΠΎΠΉ строкС Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ case, Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, break большС Π½Π΅ Π½ΡƒΠΆΠ΅Π½. βœ… Π”ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π½ΠΎΠ²ΡƒΡŽ константу Π² enum, Π½ΠΎ Π½Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ case? ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ компиляции, Π° Π½Π΅ Ρ‚ΠΈΡ…ΠΈΠΉ Π±Π°Π³, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ проявится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΎ врСмя выполнСния. πŸ‘‰ Java Portal

πŸ’‘ Java: sealed types ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ Π³Ρ€Π°Ρ„ наслСдования с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ permits. Π­Ρ‚ΠΎ Π΄Π°Ρ‘Ρ‚ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ классы ΠΈ
+1
πŸ’‘ Java: sealed types ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ Π³Ρ€Π°Ρ„ наслСдования с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ permits. Π­Ρ‚ΠΎ Π΄Π°Ρ‘Ρ‚ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ классы ΠΈΠ»ΠΈ интСрфСйсы ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. βœ… ΠΠ°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ sealed-класса ΠΈΠ»ΠΈ интСрфСйса ΠΌΠΎΠ³ΡƒΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΈΠΏΡ‹, пСрСчислСнныС Π² permits. βœ… ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·Ρ€Π΅ΡˆΡ‘Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ‚ΠΈΠΏ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ объявлСн ΠΊΠ°ΠΊ final, sealed ΠΈΠ»ΠΈ non-sealed. ΠŸΡ€ΠΈ этом non-sealed β€” это своСго Ρ€ΠΎΠ΄Π° Β«Ρ‚ΠΎΡ‡ΠΊΠ° Π²Ρ‹Ρ…ΠΎΠ΄Π°Β»: начиная с Ρ‚Π°ΠΊΠΎΠ³ΠΎ класса, ограничСния ΡΠ½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ, ΠΈ наслСдованиС снова становится ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ для Π»ΡŽΠ±Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠ². #JavaDev πŸ‘‰ Java Portal

Spring Boot: Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΡΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ @Version. βœ… ИдСально ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚, ΠΊΠΎΠ³Π΄Π°: ΠΎΠΏΠ΅Ρ€Π°
Spring Boot: Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΡΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ @Version. βœ… ИдСально ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚, ΠΊΠΎΠ³Π΄Π°: ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ чтСния Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ часто; ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ записи происходят ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅Π΄ΠΊΠΎ; ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ Ρ€Π΅Π΄ΠΊΠΎ. ❌ НС ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚, ΠΊΠΎΠ³Π΄Π°: ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ происходят часто; трСбуСтся строгая ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° (strict serialization). #SpringBoot #JavaDev πŸ‘‰ Java Portal

πŸ” ВОП-5 ошибок Π½Π° алгоритмичСской сСссии ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Π½Π° связи Ваня ΠšΠΎΡ€ΠΎΠ²ΠΊΠΈΠ½Π° ΠΈΠ· ШОРВКАВ. ΠœΠ΅Π½Ρ‚ΠΎΡ€ ΠΏΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌ ΠΈ backend-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚
πŸ” ВОП-5 ошибок Π½Π° алгоритмичСской сСссии ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Π½Π° связи Ваня ΠšΠΎΡ€ΠΎΠ²ΠΊΠΈΠ½Π° ΠΈΠ· ШОРВКАВ. ΠœΠ΅Π½Ρ‚ΠΎΡ€ ΠΏΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌ ΠΈ backend-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ мСсяц тысячи Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΡΠΎΠ²Π΅Ρ€ΡˆΠ°ΡŽΡ‚ ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ ошибки Π½Π° алгоритмичСских ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŒΡŽ 🚩 И ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒΡΡ... Π½Π΅ ΠΊ Ρ‚ΠΎΠΌΡƒ. Π£ΠΆΠ΅ сСгодня Π² 19:00 (МБК) ΠΏΡ€ΠΎΠ²Π΅Π΄Ρƒ Π²Π΅Π±ΠΈΠ½Π°Ρ€ ΠΈ ΠΏΠΎΠΊΠ°ΠΆΡƒ, Ρ‡Ρ‚ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŒΡŽΠ΅Ρ€ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ошибки Ρ‡Π°Ρ‰Π΅ всСго приводят ΠΊ ΠΎΡ‚ΠΊΠ°Π·Ρƒ β€’ Π΄Π°ΠΌ практичСскиС совСты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΆΠ΅ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ собСсСдовании β€’ расскаТу ΠΏΡ€ΠΎ спСцифику российского BigTech 🀘 Π­Ρ‚ΠΎ бСсплатно. Π­Ρ„ΠΈΡ€ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… мСнторской ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΡ‚ ШОРВКАВ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хотят ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ свой Π³Ρ€Π΅ΠΉΠ΄, Π—ΠŸ ΠΈ ΠΏΡ€ΠΎΠΊΠ°Ρ‡Π°Ρ‚ΡŒ скиллы. ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈ Π² нашСго Π±ΠΎΡ‚Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ссылку Π½Π° эфир β†’ @shortcut_sh_bot Π Π΅ΠΊΠ»Π°ΠΌΠ°. О Ρ€Π΅ΠΊΠ»Π°ΠΌΠΎΠ΄Π°Ρ‚Π΅Π»Π΅.

ΠΠžΠ’Π˜ΠΠšΠ: УстойчивыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Durable Functions) Π² PostgreSQL 🀯 pg_durable β€” это Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ PostgreSQL. БостояниС Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ процСсса, ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹Π΅ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ ΠΈ восстановлСниС хранятся Π² Postgres, ΠΈ ΠΎΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ Postgres / Π²Ρ‹ΡΠΎΠΊΡƒΡŽ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ / Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ / восстановлСниС. https://techcommunity.microsoft.com/blog/adforpostgresql/introducing-durable-functions-in-postgresql/4526821 πŸ‘‰ Java Portal

Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ΅Π½ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ прокси (Reverse Proxy)? Π£ вас Π΅ΡΡ‚ΡŒ API Π½Π° Node.js. ΠŸΠΎΠ½Π°Ρ‡Π°Π»Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ запросы Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π² ΠΏ
Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ΅Π½ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ прокси (Reverse Proxy)? Π£ вас Π΅ΡΡ‚ΡŒ API Π½Π° Node.js. ΠŸΠΎΠ½Π°Ρ‡Π°Π»Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ запросы Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈ всё Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ. Но ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ роста ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½ΠΎΠ²Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ: - ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ HTTPS; - Ρ€Π°Π·Π΄Π°Π²Π°Ρ‚ΡŒ статичСскиС Ρ„Π°ΠΉΠ»Ρ‹; - ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ частоты запросов (Rate Limiting); - ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π§Π°ΡΡ‚ΡŒ этих Π·Π°Π΄Π°Ρ‡ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ прямо Π² API. Но ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΠ³Π΄Π° Π΅ΠΌΡƒ приходится Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π΄Π²Π΅ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ€ΠΎΠ»ΠΈ: Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ бизнСс-Π»ΠΎΠ³ΠΈΠΊΡƒ (ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ, ΠΏΠ»Π°Ρ‚Π΅ΠΆΠΈ, Π·Π°ΠΊΠ°Π·Ρ‹ ΠΈ Ρ‚. Π΄.); Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ инфраструктурныС Π·Π°Π΄Π°Ρ‡ΠΈ (HTTPS, Ρ€Π°Π·Π΄Π°Ρ‡Π° статики, Rate Limiting ΠΈ Ρ‚. Π΄.). По ΠΌΠ΅Ρ€Π΅ появлСния Π½ΠΎΠ²Ρ‹Ρ… инфраструктурных Π·Π°Π΄Π°Ρ‡ становится Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ ΠΎΡ‚Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΈΡ… ΠΎΡ‚ бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ. Для этого ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ΠΎΠΌ ΠΈ вашим API Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ слой. Π­Ρ‚ΠΎΡ‚ слой называСтся ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΌ прокси (Reverse Proxy). Он ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ входящиС запросы ΠΈ Ρ€Π΅ΡˆΠ°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ с Π½ΠΈΠΌΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ: ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈΡ… ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π² API. Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ β†’ Reverse Proxy β†’ Π’Π°Ρˆ API Одним ΠΈΠ· самых популярных Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ прокси являСтся NGINX. Π“Π»Π°Π²Π½ΠΎΠ΅ прСимущСство Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ API ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° бизнСс-Π»ΠΎΠ³ΠΈΠΊΠ΅, Π° ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ прокси Π±Π΅Ρ€Ρ‘Ρ‚ Π½Π° сСбя ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ входящим Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ ΠΏΠΎΠΏΠ°Π΄Ρ‘Ρ‚ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. НСдостаток Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ появляСтся Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ. Однако ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ роста прилоТСния Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ отвСтствСнности ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ сопровоТдСниС систСмы. πŸ‘‰ Java Portal

ΠžΡΠ½ΠΎΠ²Ρ‹ систСмного Π΄ΠΈΠ·Π°ΠΉΠ½Π° Π’Π΅ΠΎΡ€Π΅ΠΌΠ° CAP: ΠΏΠΎΡ‡Π΅ΠΌΡƒ распрСдСлённыС систСмы Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ всё сразу ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈ
ΠžΡΠ½ΠΎΠ²Ρ‹ систСмного Π΄ΠΈΠ·Π°ΠΉΠ½Π° Π’Π΅ΠΎΡ€Π΅ΠΌΠ° CAP: ΠΏΠΎΡ‡Π΅ΠΌΡƒ распрСдСлённыС систСмы Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ всё сразу ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… сСрвСрах Π² Ρ€Π°Π·Π½Ρ‹Ρ… Π³ΠΎΡ€ΠΎΠ΄Π°Ρ…. Π’Π½Π΅Π·Π°ΠΏΠ½ΠΎ... Π‘Π΅Ρ‚Π΅Π²ΠΎΠ΅ соСдинСниС ΠΌΠ΅ΠΆΠ΄Ρƒ сСрвСрами прСрываСтся. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ систСмы Π΅ΡΡ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€: ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ запросы? Или ΠΎΡ‚ΠΊΠ»ΠΎΠ½ΡΡ‚ΡŒ запросы, ΠΏΠΎΠΊΠ° всё Π½Π΅ синхронизируСтся? ИмСнно эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ Ρ‚Π΅ΠΎΡ€Π΅ΠΌΠ° CAP. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ‚Π΅ΠΎΡ€Π΅ΠΌΠ° CAP? CAP ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚: C β€” Consistency (Π‘ΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ) ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²ΠΈΠ΄ΠΈΡ‚ ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ Π΄Π°Π½Π½Ρ‹Π΅, нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡƒ сСрвСру ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΡΡ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ β‚Ή1000. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ сСрвСр сразу ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠ±Π½ΠΎΠ²Π»Ρ‘Π½Π½Ρ‹ΠΉ баланс. A β€” Availability (Π”ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ) ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ запрос ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‚. Π”Π°ΠΆΠ΅ Ссли ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько сСрвСров нСдоступны. ΠžΡ‚Π²Π΅Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ самых свСТих Π΄Π°Π½Π½Ρ‹Ρ…. P β€” Partition Tolerance (Π£ΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ ΠΊ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΡŽ) БистСма ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Π΄Π°ΠΆΠ΅ Ссли связь ΠΌΠ΅ΠΆΠ΄Ρƒ сСрвСрами ΠΏΡ€Π΅Ρ€Π²Π°Π½Π°. Π’ распрСдСлённых систСмах сСтСвыС сбои Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½Ρ‹. Π“Π»Π°Π²Π½ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ. Когда происходит сСтСвоС Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ (partition)... МоТно Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π΄Π²ΡƒΡ…: βœ”οΈ Π‘ΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ (Consistency) Π˜Π›Π˜ βœ”οΈ Π”ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ (Availability) Π“Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Π° ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ нСльзя. Partition Tolerance Π² распрСдСлённых систСмах Π½Π΅ ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»Π΅Π½ β€” Π²Ρ‹ обязаны ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ это случится. - CP-систСмы Π’Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚: βœ”οΈ Π‘ΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ βœ”οΈ Π£ΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ ΠΊ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΡŽ ΠŸΡ€ΠΈΠΌΠ΅Ρ€:
Π‘Π΅Ρ€Π²Π΅Ρ€ A      βœ–οΈ Π‘Π΅Ρ‚ΡŒ βœ–οΈ      Π‘Π΅Ρ€Π²Π΅Ρ€ B
Если сСрвСры Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Ρ‰Π°Ρ‚ΡŒΡΡ, Ρ‡Π°ΡΡ‚ΡŒ запросов отклоняСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅: - БанковскиС систСмы - ΠŸΠ»Π°Ρ‚Ρ‘ΠΆΠ½Ρ‹Π΅ систСмы - Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ запасами ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π²Π°ΠΆΠ½Π΅Π΅, Ρ‡Π΅ΠΌ постоянный ΠΎΡ‚Π²Π΅Ρ‚. - AP-систСмы Π’Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚: βœ”οΈ Π”ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ βœ”οΈ Π£ΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ ΠΊ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΡŽ Π”Π°ΠΆΠ΅ Ссли сСрвСры Ρ‚Π΅Ρ€ΡΡŽΡ‚ связь, ΠΎΠ½ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ. НСкоторыС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅. ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅: - Π‘ΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ сСти - Π›Π΅Π½Ρ‚Ρ‹ новостСй - ΠšΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π”ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ Π²Π°ΠΆΠ½Π΅Π΅ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΉ согласованности. = Π Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ = Π‘Π°Π½ΠΊΠΈΠ½Π³ НСвСрныС балансы нСдопустимы. Π’Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ CP. Π›Π°ΠΉΠΊΠΈ Π² Instagram Π’ΠΈΠ΄Π΅Ρ‚ΡŒ 1024 Π»Π°ΠΉΠΊΠ° вмСсто 1026 ΠΏΠ°Ρ€Ρƒ сСкунд β€” Π½Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°. Π’Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ AP. ΠšΠΎΡ€Π·ΠΈΠ½Π° ΠΏΠΎΠΊΡƒΠΏΠΎΠΊ МногиС систСмы ΠΈΡ‰ΡƒΡ‚ баланс. ΠšΠΎΡ€Π·ΠΈΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ доступной, Π° Π²Π°ΠΆΠ½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ (ΠΎΠΏΠ»Π°Ρ‚Π°) β€” строго согласованными. Π“Π»Π°Π²Π½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄. Π’Π΅ΠΎΡ€Π΅ΠΌΠ° CAP Π½Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚: Β«Π’Ρ‹Π±Π΅Ρ€ΠΈ Π»ΡŽΠ±Ρ‹Π΅ Π΄Π²Π°Β». Она Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚: Когда происходит сСтСвоС Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅, Π²Ρ‹ обязаны Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ Π‘ΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈ Π”ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒΡŽ. КаТдая распрСдСлённая систСма Π΄Π΅Π»Π°Π΅Ρ‚ этот компромисс. πŸ‘‰ Java Portal

Java CompletableFuture: Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° асинхронных шагов Π±Π΅Π· Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ I/O Π²Ρ‹Π·ΠΎΠ²Π΅. Π¦Π΅ΠΏΠΎΡ‡ΠΊΠ°: supplyAsync, thenAppl
Java CompletableFuture: Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° асинхронных шагов Π±Π΅Π· Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ I/O Π²Ρ‹Π·ΠΎΠ²Π΅. Π¦Π΅ΠΏΠΎΡ‡ΠΊΠ°: supplyAsync, thenApply, thenCompose, thenAccept (ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π·Π°Ρ‚Π΅ΠΌ Π·Π°ΠΊΠ°Π·Ρ‹) ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΠΉΡ‚Π΅ сбои Ρ‡Π΅Ρ€Π΅Π· exceptionality, Π½Π΅ Π΄Π°Π²Π°ΠΉΡ‚Π΅ асинхронным ошибкам Π±Π΅ΡΡˆΡƒΠΌΠ½ΠΎ ΠΈΡΡ‡Π΅Π·Π°Ρ‚ΡŒ ЗапускайтС нСзависимыС Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠΉΡ‚Π΅ Ρ‡Π΅Ρ€Π΅Π· thenCombine ΠΊΠΎΠ³Π΄Π° ΠΎΠ±Π° Π·Π°Π²Π΅Ρ€ΡˆΠ°Ρ‚ΡΡ #JavaDev πŸ‘‰ Java Portal

ΠšΡ‚ΠΎ-Ρ‚ΠΎ собрал Kubernetes, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ самый простой способ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ Kubernetes. - НС Π½ΡƒΠΆΠ΅Π½ Docker. - НС Π½ΡƒΠΆΠ΅Π½ Minikube. - НС Π½ΡƒΠΆΠ΅Π½ Kind. - НС Π½ΡƒΠΆΠ΅Π½ EKS. - НС трСбуСтся установка. ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π²Π΅Π±-страницу ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΠΉΡ‚Π΅ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ Pods, Deployments, ReplicaSets, Nodes, ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠ΅Ρ‚ΡŒ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. Π˜Π½ΠΆΠ΅Π½Π΅Ρ€Π½Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π° Π·Π° этим ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ нСвСроятна. Kubernetes написан Π½Π° Go, Π½ΠΎ вмСсто компиляции Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ пСрСписал ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Kubernetes Π½Π° TypeScript, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Π½Π°Ρ‚ΠΈΠ²Π½ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°. Π­Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π»ΡƒΡ‡ΡˆΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² использования ИИ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ я Π²ΠΈΠ΄Π΅Π». ИИ ΠΏΠΎΠΌΠΎΠ³ ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ тысячи строк ΠΊΠΎΠ΄Π° Kubernetes, ΠΏΠΎΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ провСрял всё ΠΈ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π» ΠΎΠ±ΡˆΠΈΡ€Π½Ρ‹ΠΌΠΈ тСстами, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ соотвСтствуСт Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌΡƒ кластСру. Π­Ρ‚ΠΎ Π½Π΅ для ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½-Π½Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ. Он создан для обучСния, прСподавания, экспСримСнтов ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ ΠΊ DevOps-собСсСдованиям. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΎΠ½Π±ΠΎΡ€Π΄ΠΈΠ½Π³ Π½ΠΎΠ²Ρ‹Ρ… ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΎΠ² ΠΈΠ»ΠΈ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ Kubernetes Π±Π΅Π· нСобходимости Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ час Π½Π° установку Docker, настройку Minikube ΠΈΠ»ΠΈ созданиС EKS-кластСра. Π― искрСннС ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ измСнят Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΈΠ·ΡƒΡ‡Π°Π΅ΠΌ инфраструктуру. Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ > БтатичСская докумСнтация. ΠŸΠΎΡΡ‚ Π² Π±Π»ΠΎΠ³Π΅: https://ngrok.com/blog/i-ported-kubernetes-to-the-browser πŸ‘‰ Java Portal

PostgreSQL 19 Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ Π² SQL ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Π³Ρ€Π°Ρ„ΠΎΠ²Ρ‹Ρ… запросов. МоТно ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΏΡƒΡ‚ΠΈ связСй Π²Ρ€ΠΎΠ΄Π΅: user β†’ likes β†’ topic ← likes ← pe
PostgreSQL 19 Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ Π² SQL ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Π³Ρ€Π°Ρ„ΠΎΠ²Ρ‹Ρ… запросов. МоТно ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΏΡƒΡ‚ΠΈ связСй Π²Ρ€ΠΎΠ΄Π΅: user β†’ likes β†’ topic ← likes ← peer β†’ follows β†’ creator Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ, ΠΏΡ€Π°Π² доступа, ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Π³Ρ€Π°Ρ„ΠΎΠ², Ρ†Π΅ΠΏΠΎΡ‡Π΅ΠΊ ΠΌΠΎΡˆΠ΅Π½Π½ΠΈΡ‡Π΅ΡΡ‚Π²Π° ΠΈ памяти ИИ. πŸ‘‰ Java Portal

Бамая большая ΡΠ»Π°Π±ΠΎΡΡ‚ΡŒ JWT β€” Π΅Π³ΠΎ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ. PASETO устраняСт Π΅Ρ‘. БпСцификация JWT позволяСт Ρ‚ΠΎΠΊΠ΅Π½Ρƒ самому ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ Π°Π»Π³
Бамая большая ΡΠ»Π°Π±ΠΎΡΡ‚ΡŒ JWT β€” Π΅Π³ΠΎ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ. PASETO устраняСт Π΅Ρ‘. БпСцификация JWT позволяСт Ρ‚ΠΎΠΊΠ΅Π½Ρƒ самому ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Π­Ρ‚ΠΎ СдинствСнноС дизайнСрскоС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ стоит Π·Π° Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с JWT Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π΅. Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎ PASETO Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈΠ½Π°Ρ‡Π΅. 1. Атака ΠΆΠΈΠ²Ρ‘Ρ‚ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ JWT содСрТит ΠΏΠΎΠ»Π΅ alg, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ свой ΠΆΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ подписи. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² "none", ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ пропустят ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ. Или Π²Π·ΡΡ‚ΡŒ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ RSA-ΠΊΠ»ΡŽΡ‡, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΊΠ°ΠΊ HMAC-сСкрСт, ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· HS256 β€” ΠΈ сСрвСр, Π΄ΠΎΠ²Π΅Ρ€ΡΡŽΡ‰ΠΈΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΡƒ, ΠΏΡ€ΠΈΠΌΠ΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΎΠΊΠ΅Π½. Π­Ρ‚ΠΎ Π°Ρ‚Π°ΠΊΠ° RS256β†’HS256 confusion, ΠΈ ΠΎΠ½Π° Π΄ΠΎ сих ΠΏΠΎΡ€ Π»ΠΎΠΌΠ°Π΅Ρ‚ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ систСмы. 2. PASETO привязываСт ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡŽ ΠΊ вСрсии Π’ΠΎΠΊΠ΅Π½ PASETO ΠΈΠΌΠ΅Π΅Ρ‚ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ version.purpose.payload. ВСрсия фиксируСт Π½Π°Π±ΠΎΡ€ ΡˆΠΈΡ„Ρ€ΠΎΠ² β€” Π½Π΅Ρ‡Π΅Π³ΠΎ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ. v4.public β€” всСгда Ed25519. v4.local β€” всСгда XChaCha20 с BLAKE2b. НСт Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° alg β€” Π½Π΅Ρ‚ Π°Ρ‚Π°ΠΊΠΈ alg:none ΠΈ confusion-Π°Ρ‚Π°ΠΊ. 3. Π’Ρ‹ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚Π΅ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π° Π½Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π›ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΎΠΊΠ΅Π½ (local) Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ симмСтричным ΠΊΠ»ΡŽΡ‡ΠΎΠΌ. ΠŸΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ Ρ‚ΠΎΠΊΠ΅Π½ (public) подписан Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ любой с ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΌ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ JWT Ρ‚ΠΎΠ»ΡŒΠΊΠΎ подписан β€” payload читаСтся ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ base64, ΠΈ сСкрСты ΡƒΡ‚Π΅ΠΊΠ°ΡŽΡ‚, ΠΊΠΎΠ³Π΄Π° люди Π·Π°Π±Ρ‹Π²Π°ΡŽΡ‚ ΠΎΠ± этом. 4. Для сСссий Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π½ΠΈ Ρ‚ΠΎ, Π½ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ JWT бСзопасны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ°ΠΊ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠΆΠΈΠ²ΡƒΡ‰ΠΈΠ΅ Ρ‚ΠΎΠΊΠ΅Π½Ρ‹ β€” ΠΌΠΈΠ½ΡƒΡ‚Ρ‹, Π° Π½Π΅ Π½Π΅Π΄Π΅Π»ΠΈ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ тянСтся сСссия. Google Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ: JWT ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π»ΠΎΠ³ΠΈΠ½Π° ΠΌΠ΅ΠΆΠ΄Ρƒ хостами, Π° сСссия Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ остаётся ΠΊΡƒΠΊΠΎΠΉ. PASETO β€” Π»ΡƒΡ‡ΡˆΠΈΠΉ Π²Ρ‹Π±ΠΎΡ€ для ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠΆΠΈΠ²ΡƒΡ‰Π΅Π³ΠΎ подписанного Ρ‚ΠΎΠΊΠ΅Π½Π°: SSO-ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρ‹, мСТсСрвисныС Π²Ρ‹Π·ΠΎΠ²Ρ‹, ΠΎΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²ΠΎΠ΅ использованиС. Для сСссий ΠΏΡ€ΠΎΡ‰Π΅ ΠΊΡƒΠΊΠ°, подкрСплённая Postgres ΠΈΠ»ΠΈ Redis, Π° ΠΎΡ‚Π·Ρ‹Π² ΠΎΠ΄Π½ΠΎΠΉ сСссии β€” это ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΉ строки. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π»ΠΎΠ³ΠΈΠ½ΠΎΠ² Ρ…Π²Π°Ρ‚Π°ΡŽΡ‚ΡΡ Π·Π° Ρ‚ΠΎΠΊΠ΅Π½ Ρ‚Π°ΠΌ, Π³Π΄Π΅ подошла Π±Ρ‹ сСссия. https://gist.github.com/samsch/0d1f3d3b4745d778f78b230cf6061452 πŸ‘‰ Java Portal

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Event-Driven Architecture? ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ систСму с двумя микросСрвисами: 1) payments 2) emails Когда ΠΏΠ»Π°Ρ‚Π΅ΠΆ
ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Event-Driven Architecture? ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ систСму с двумя микросСрвисами: 1) payments 2) emails Когда ΠΏΠ»Π°Ρ‚Π΅ΠΆ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Ρ‘Π½, payments Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ emails, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Ρ‡Π΅ΠΊ. Но ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ растёт. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΡƒΠΆΠ½ΠΎ Π΅Ρ‰Ρ‘ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ счёт, ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅. Π§Ρ‚ΠΎΠ±Ρ‹ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, payments Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ…. КаТдая новая Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ добавляСт Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ Π²Ρ‹Π·ΠΎΠ². Π‘ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊ становится всё слоТнСС ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ. Event-Driven Architecture ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΎΠΉ способ ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΈ. Когда ΠΏΠ»Π°Ρ‚Π΅ΠΆ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Ρ‘Π½: 1) payments ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ΅Ρ‚ событиС "payment confirmed". 2) emails отправляСт Ρ‡Π΅ΠΊ. 3) billing Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ счёт. 4) metrics обновляСт Π΄Π°ΡˆΠ±ΠΎΡ€Π΄Ρ‹. Если Π·Π°Π²Ρ‚Ρ€Π° Π²Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ микросСрвис, Π΅ΠΌΡƒ просто Π½ΡƒΠΆΠ½ΠΎ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° это событиС. Payments Π½Π΅ мСняСтся. Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ это Ρ‚Π°ΠΊ Ρ…ΠΎΡ€ΠΎΡˆΠΎ сочСтаСтся с микросСрвисами: ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ сохраняСт Π΅Π΄ΠΈΠ½ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π±Π΅Π· прямой зависимости ΠΎΡ‚ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ…. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Π½Π΅ всё Ρ‚ΠΎΠ»ΡŒΠΊΠΎ прСимущСства. БистСма Ρ‚Π°ΠΊΠΆΠ΅ становится слоТнСС. Π’ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΊΠ°ΠΊ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹Π΅ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ, Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ΡΡ события, порядок ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ Π½Π°Π±Π»ΡŽΠ΄Π°Π΅ΠΌΠΎΡΡ‚ΡŒ. На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π±Ρ€ΠΎΠΊΠ΅Ρ€ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Kafka ΠΈΠ»ΠΈ RabbitMQ), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ событиС ΠΈ распрСдСляСт Π΅Π³ΠΎ ΠΏΠΎ подписанным микросСрвисам. πŸ‘‰ Java Portal

Java Portal | ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ - Statistics & analytics of Telegram channel @java_iibrary