看到网上一片文章说:数据库不适合Docker及容器化?
PHP中文网
PHP中文网 2017-04-27 09:01:42
0
5
811

文章连接
刚开始用docker,有点疑惑?

PHP中文网
PHP中文网

认证0级讲师

membalas semua(5)
phpcn_u1582

Mengenai pangkalan data yang tidak sesuai untuk diletakkan di docker, terdapat dua artikel bengkok Satu disiarkan oleh poster asal, dan yang kedua ialah artikel ini, diterjemahkan

Masih sudut pandangan yang sama:

Apabila volum kecil, anda boleh melakukannya secara santai Apabila volum besar, beberapa perkara tidak akan berfungsi dengan cara yang betul pangkalan data, anda memerlukan sokongan pelbagai sistem, termasuk sistem Middleware, sistem kontena.

Jika pangkalan data anda boleh menskalakan secara automatik, pemulihan bencana, bertukar dan dilengkapi dengan penyelesaian berbilang nodnya sendiri, docker ialah penyelesaian yang lebih baik.

Tetapi jika tidak, jangan gunakan docker.

Teks asal juga menjadikannya sangat jelas:

在 Docker 中水平伸缩只能用于无状态计算服务,而不是数据库。

Apabila trafik kecil, apa-apa sahaja boleh dimasukkan ke dalam kontena. Pangkalan data, aplikasi, hadoop, pelbagai nod, nginx.


Apabila volum adalah besar, perkhidmatan berkaitan penyimpanan tidak sesuai untuk perkhidmatan tanpa kewarganegaraan seperti lapisan aplikasi dan lapisan perniagaan sesuai untuk perkhidmatan intensif memori seperti caching boleh disimpan.

Ringkasnya, terdapat tiga isu, pemulihan bencana, prestasi dan ketekalan data.

Setakat pangkalan data tradisional seperti MySQL, terdapat begitu banyak masalah yang boleh saya senaraikan:

  1. Bagaimana untuk menyimpan mysql?

  2. Apakah yang perlu saya lakukan jika pangkalan data utama mysqld berlutut?

  3. Apakah yang perlu saya lakukan jika pelayan perpustakaan utama berlutut?

  4. Apa yang perlu saya lakukan jika hamba mysqld melutut?

  5. Apa yang perlu saya lakukan jika budak dok melutut?

  6. Bolehkah mysql dikembangkan dengan cepat melalui bekas apabila puncak semakin hampir? rancangan?

  7. Penyelesaian penukaran induk-hamba data? Bagaimana untuk memastikan konsistensi?

  8. Volume semasa tempoh puncak cukup besar, dan kadangkala kapasiti mesin fizikal hanya cukup untuk satu proses mysql.

  9. Jadi ia juga satu mesin, kenapa mysql tidak boleh dimulakan terus?

  10. Mengapa kita perlu meletakkan bekas di luar? Berapakah kehilangan prestasi?

  11. Bagaimana untuk menaik taraf mysql?

  12. Adakah volum data akan kehilangan data? (dah banyak kali jumpa bekas rosak...)

Tetapi mysql bukan tidak boleh disimpan sepenuhnya.
Perniagaan yang tidak sensitif terhadap kehilangan data (seperti produk yang ditemui oleh carian JD.com) boleh didigitalkan dan menggunakan sharding pangkalan data untuk meningkatkan daya pengeluaran dengan menambah bilangan kejadian.

Bagi isu yang dinyatakan dalam artikel asal, beberapa perkara mempunyai kelemahan, tetapi ia difikirkan dengan baik. Sebagai contoh, soalan berikut sangat bermasalah (tentang direktori data kongsi):

容易水平伸缩?是否要在多个实例之间共享数据目录?你不害怕直接数据并发问题和可能的数据损坏吗?使用专用数据环境部署多个实例不会更安全吗?最后搞一个主从复制?

Setakat pangkalan data yang saya hubungi setakat ini, hanya pangkalan data seperti cassandra (ada juga tidb dan cockroachdb, tetapi saya tidak menemui kes penggunaan di syarikat besar setakat ini) sesuai untuk kontena.

Tetapi cassandra sendiri juga hampir menjadi tanpa kerakyatan: ia menyediakan pemulihan bencana, pengembangan kapasiti dan penyelesaian penukaran sendiri.


Berikut ialah sebutan JD.com.

JD.com adalah outlier, tetapi JD.com juga telah menyebut masalah yang sama dan perkara yang memerlukan perhatian.

计算类应用、无状态应用优先,例如微服务特别容易迁移到弹性云。
应用迁移到弹性云,最好选择统一的规格,避免各个实例的负载不均衡。
应用从物理机迁移到弹性云后,实例数量会增加,相应对后端服务的连接数会增加,特别是数据库连接,所以需要防止连接过载。
在弹性云上共享磁盘IO,要避免应用刷日志,减少本地读写文件,采用JFS或JIMDB来满足文件存储或共享数据需求。
容器的CPU核数原低于原有物理机的核数,应用需要根据CPU核数来合理地配置线程数和网络参数。
修改底层,让应用在运行时能准确地拿到自身容器的核数。

Malah, banyak penyesuaian telah dilakukan untuk berlabuh.

Anda boleh melihat perkongsian JD.com.

伊谢尔伦

Tidak sesuai, tidak boleh

Jika tiada masalah dengan satu mesin, ia masih bermanfaat dalam beberapa kes, contohnya, apabila pangkalan data Oracle syarikat saya melaraskan parameter sebelum ini, pangkalan data ranap dan tidak dapat dimulakan masa itu, jadi saya menjalankannya secara langsung. Hanya arahkan direktori data ke yang asal

Tidak kira bagaimana anda mencipta kluster, bukan mudah untuk menyediakannya secara manual menggunakan docker atau alatan seperti swarm. Adalah lebih baik untuk membinanya secara langsung pada mesin fizikal untuk menyelamatkan masalah

Terdapat syarikat di luar negara yang pakar dalam penyelesaian penyimpanan data buruh pelabuhan Contohnya, konvoi kumpulan dan penternak

PHPzhong

Docker lebih sesuai untuk stateless dan tidak akan mengubah perkhidmatan.

Jika terdapat sejumlah besar kluster:
Tulis fail docker. Kemudian apabila kod itu dimuat naik ke gudang kod, selepas menggunakan fail docker, biarkan skrip keluaran membina perkhidmatan docker dalam kelompok dan masukkan kod perkhidmatan ke dalamnya.

Bukan sahaja MySQL, tetapi serupa dengan redis dan mc tidak sesuai untuk dimasukkan ke dalam docker Dalam erti kata lain, meletakkan pangkalan data dalam docker hanya untuk menggunakan docker, dan tidak banyak faedahnya.

曾经蜡笔没有小新

Ya, kerana ciri-ciri docker menentukan bahawa ia tidak sesuai untuk penyimpanan data Bukan sahaja pangkalan data, tetapi juga semua perkhidmatan berkaitan storan tidak sesuai untuk menggunakan docker.

世界只因有你

Saya tidak dapat mengetahui direktori mana imej mysql rasmi menyimpan data.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!