PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Npgsql с Pgbouncer на Kubernetes - обединяване и поддържане на активност

Като цяло сте на прав път и анализът ви изглежда точен. Някои коментари:

Вариант 2 (извеждане на keepalive) ще помогне за премахване на неактивни връзки в пула на Npgsql, които са прекъснати. Както сте написали, вашето приложение все още ще има някои грешки (тъй като някои лоши неактивни връзки може да не бъдат премахнати навреме). Няма особена причина да мислим, че това ще причини допълнителни проблеми - това трябва да е доста безопасно за включване.

Вариант 3 наистина е проблематичен за perf, тъй като TCP връзка към pgbouncer ще трябва да се установява всеки път, когато е необходима връзка с база данни. Освен това няма да осигури 100% защитен механизъм, тъй като pgbouncer все още може да отпадне, докато се използва връзка.

В крайна сметка вие питате за устойчивостта в случай на произволна повреда на мрежа/сървър, което не е лесно за постигане. Единственият 100% надежден начин да се справите с това е във вашето приложение, чрез специален слой, който би повторил операциите, когато възникне преходно изключение. Може да искате да погледнете Polly и имайте предвид, че Npgsql ни помага малко, като излага IsTransient изключение, което може да се използва като тригер за повторен опит (Entity Framework Core също включва подобна „стратегия за повторен опит“). Ако все пак тръгнете по този път, имайте предвид, че транзакциите са особено трудни за правилно обработване.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres проектиран ли е да пише в споделени хранилища за данни?

  2. postgreSQL сортиране с времеви отпечатъци

  3. Как да определите най-голямата разделителна способност на ИНТЕРВАЛ?

  4. Как потребителите могат да се харесват един на друг, като използват sequelize postgres nodejs?

  5. pg client.query() не чака при изчакване