Önsöz
IM'nin tam adı "Anında Mesajlaşma" ve Çince adı anlık mesajlaşmadır. Bu son derece bilgili mobil İnternet çağında, IM ürünleri yaşamın olmazsa olmazı haline geldi ve DingTalk, WeChat, QQ gibi daha ünlü ürünler ve ana işlevi IM olan diğer ürünler. Elbette, WeChat ekolojik bir ürün haline geldi, ancak temel işlevi hala IM. Ayrıca IM sistemine dayalı olmayan bazı uygulamalar da vardır.Bunlardan en tipik olanları çevrimiçi oyunlar ve sosyal uygulamalardır, IM ayrıca önemli bir işlevsel modüldür. IM sisteminin zaten sosyal özelliklere sahip herhangi bir uygulama için temel bir işlev olduğu söylenebilir ve bu tür sistemlerin tasarımı ve uygulaması hakkında İnternette giderek daha fazla tartışma vardır.
IM sistemi, İnternetin ilk günlerinde vardı ve temel teknik mimarisi, on yıldan fazla bir süredir geliştirilmesinde birçok kez güncellenmiş ve yinelenmiştir.Erken CS ve P2P mimarisinden günümüzün arka planına kadar, mobil terminalleri içeren karmaşık bir dağıtılmış sisteme dönüşmüştür. Ağ iletişimi, protokoller, güvenlik, depolama ve arama teknolojilerinin tüm yönleri. IM sisteminin temel kısmı mesaj sistemidir. Mesaj sisteminin temel işlevi, mesajların senkronizasyonu, depolanması ve geri çağrılmasıdır:
Bu makalenin içeriği esas olarak IM sistemindeki mesaj sistemi mimarisini içerir ve Alibaba Cloud Tablestore'un Timeline modeline dayalı bir mesaj sistemi tanıtacaktır. Tablestore Zaman Çizelgesine dayalı modern mesaj sistemi, "çoklu terminal senkronizasyonu", "mesaj dolaşımı" ve "çevrimiçi erişim" dahil olmak üzere mesaj sisteminin birçok gelişmiş özelliğini aynı anda destekleyebilir. Performans ve ölçek açısından, tam mesaj bulut depolama ve indeksleme, milyonlarca TPS yazma ve milisaniye düzeyinde gecikme mesajı senkronizasyonu ve alma yetenekleri elde edebilir.
Daha sonra, Tablestore Timeline modelinin kavramını ve kullanımını daha ayrıntılı olarak tanıtmak için iki makale yayınlamaya devam edeceğiz:
Geleneksel mimari ve modern mimari
Geleneksel mimari Daha sonra mesaj önce senkronize edilir ve ardından saklanır. Çevrimiçi kullanıcılar için, mesaj doğrudan çevrimiçi alıcıya gerçek zamanlı olarak senkronize edilecektir.Mesaj başarıyla senkronize edildikten sonra sunucuda kalmayacaktır. Çevrimdışı kullanıcılar için veya mesaj gerçek zamanlı olarak başarıyla senkronize edilemediğinde, mesaj çevrimdışı kütüphanede kalacaktır.Alıcı yeniden bağlandığında, tüm okunmamış mesajlar çevrimdışı kütüphaneden alınacaktır. Çevrimdışı kütüphanedeki mesaj alıcıyla başarılı bir şekilde senkronize edildiğinde, mesaj çevrimdışı kütüphaneden silinecektir. Geleneksel mesajlaşma sistemlerinde, sunucunun ana görevi, gönderen ile alıcı arasındaki bağlantı durumunu korumak ve mesajların göndericiden alıcıya teslim edilmesini sağlamak için çevrimiçi mesaj senkronizasyonu ve çevrimdışı mesaj tamponlama yetenekleri sağlamaktır. Sunucu mesajlarda kalmaz, bu nedenle mesaj dolaşımını destekleyemez. Mesajların kalıcı olarak depolanması ve endekslenmesi yalnızca alıcı uçta yerel olarak uygulanabilir ve veri güvenilirliği son derece düşüktür.
Modern mimari Daha sonra mesaj önce depolanır ve ardından senkronize edilir. Önce depolamanın ve ardından eşitlemenin avantajı, alıcı mesajın alındığını onaylarsa, mesajın buluta kaydedilmiş olması gerektiğidir. Ve mesajlar iki kütüphanede depolanacaktır, biri mesaj depolama kütüphanesi olup, tüm konuşmaların tüm mesajlarını depolamak için kullanılır, esas olarak mesaj dolaşımını desteklemek için kullanılır. Diğeri, esas olarak alıcının çok terminalli senkronizasyonu için kullanılan mesaj senkronizasyon kitaplığıdır. Mesaj göndericiden gönderildikten sonra, sunucu tarafından iletilir ve sunucu mesajı önce mesaj depolama veritabanına kaydeder ve ardından mesaj senkronizasyon veritabanına kaydeder. Mesajın kalıcı olarak saklanmasını tamamladıktan sonra, çevrimiçi alıcı doğrudan çevrimiçi göndermeyi seçecektir. Ancak çevrimiçi push gerekli bir yol değil, daha iyi bir ileti teslim yoludur. Çevrimiçi gönderimi başarısız olan veya çevrimdışı olan alıcılar için başka bir birleşik mesaj senkronizasyon yöntemi olacaktır. Alıcı, senkronize edilmemiş tüm mesajları aktif olarak sunucuya çekecektir, ancak alıcının ne zaman senkronize edileceği ve bu noktada mesajın senkronize edileceği sunucu tarafından bilinmemektedir, bu nedenle sunucunun alıcıya senkronize edilmesi gereken tüm mesajları kaydetmesi gerekir. Bu, mesaj senkronizasyon kütüphanesinin ana işlevidir. Yeni senkronizasyon cihazları için, mesaj deposunun ana işlevi olan mesaj dolaşımına ihtiyaç duyulacaktır.Mesaj deposunda, herhangi bir görüşmenin tüm geçmiş mesajlarını alabilirsiniz. Mesaj alımının gerçekleştirilmesi, genellikle neredeyse gerçek zamanlı (NRT) indeks oluşturma süreci olan mesaj deposundaki mesajların indekslenmesine dayanır ve bu indeks de çevrimiçidir.
Yukarıdakiler geleneksel mimari ile modern mimari arasında basit bir karşılaştırmadır.Modern mimari üzerindeki tüm mesaj senkronizasyonu, depolama ve indeksleme süreci çok karmaşık hale gelmemiştir. Modern mimarinin gerçekleştirilmesi, esasen geleneksel mimarideki yerel depolamayı ve indekslemeyi buluta taşımaktır. En büyük zorluk, tüm mesajların depolanmasını ve indekslenmesini merkezi olarak yönetme ihtiyacıdır. Yararı, gerçekleştirilebilmesidir. Çoklu terminal senkronizasyonu , Mesaj dolaşımı Hem de Çevrimiçi arama . Modern mimarinin özünün, iki mesaj kitaplığı "ileti senkronizasyon kitaplığı" ve "ileti depolama kitaplığı" olduğu ve "ileti depolama kitaplığı" nın "ileti dizini" nin gerçekleştirilmesi olduğu görülebilmektedir. Daha sonra bunları yavaş yavaş parçalarına ayıracağız. Temel tasarım ve uygulama.
Temel model
Mesaj sisteminin tasarımını ve uygulamasını derinlemesine açıklamadan önce, mesaj sistemindeki birkaç temel kavram ve temel model hakkında bilgi sahibi olmak gerekir. İnternette analiz edilen birçok farklı tipte mesaj sistemi uygulaması, farkın farkına varılması esas olarak mesaj senkronizasyonunda ve depolama şemasında, aslında mesaj veri modelinde büyük bir ortaklık var. Veri senkronizasyon modeli etrafındaki tartışma esas olarak "okuma difüzyonu", "yazma difüzyonu" ve "hibrit mod" üç çözümüne odaklanmaktadır Şu anda başka seçenek yoktur. Veri modelinin soyutlanması için standart bir tanım yoktur.
Bu bölüm, mesaj sistemindeki mesaj modelinin bir soyutlaması olan, Tablestore tarafından önerilen ve geliştiricilerin mesaj sistemindeki mesaj senkronizasyonunu ve depolama modelini basitleştirip daha iyi anlamasına olanak tanıyan Zaman Çizelgesi modelini tanıtacaktır. Bu modele dayanarak, biz Mesaj senkronizasyonunun ve depolamanın seçimi ve gerçekleştirilmesini daha fazla tartışacaktır.
Zaman çizelgesi modeli
Zaman çizelgesi, mesajları özetleyen mantıksal bir modeldir. Bu model, mesaj senkronizasyonu ve depolama modellerini anlamamızı kolaylaştırmamıza yardımcı olacaktır. Mesaj senkronizasyon kitaplıklarının ve depolama kitaplıklarının tasarımı ve uygulaması da Zaman Çizelgesi'nin özelliklerine ve gereksinimlerine dayanmaktadır.
Şekil, Zaman Çizelgesi modelinin soyut bir ifadesidir. Zaman çizelgesi basitçe bir mesaj kuyruğu olarak anlaşılabilir, ancak bu mesaj kuyruğu aşağıdaki özelliklere sahiptir:
Mesaj senkronizasyonu Zaman çizelgesine dayalı olarak çok basit bir şekilde uygulanabilir Şekildeki örnekte, mesajı gönderen A'dır, mesaj alıcısı B'dir ve B birden fazla alıcıya, yani B1, B2 ve B3'e sahiptir. A, B'ye bir mesaj gönderir ve mesajın, B'nin birden fazla ucuna senkronize edilmesi gerekir. Senkronize edilecek mesajlar, bir Zaman Çizelgesi aracılığıyla değiş tokuş edilir. A tarafından B'ye gönderilen tüm mesajlar bu Zaman Çizelgesine kaydedilecek ve B'nin her alıcı ucu bu Zaman Çizelgesinden bağımsız olarak mesajlar çekecektir. Senkronizasyon tamamlandıktan sonra, her alıcı uç, bir sonraki mesaj senkronizasyonunun başlangıç pozisyonu olarak yeni senkronize edilmiş mesajın Sıra Kimliği'ni, yani en son pozisyonu yerel olarak kaydedecektir. Sunucu, her bir ucun senkronizasyon durumunu kaydetmez ve her bir uç, herhangi bir zamanda herhangi bir noktadan mesajları alabilir.
Mesaj saklama Aynı zamanda Zaman Çizelgesi temelinde de uygulanır Mesaj senkronizasyonundan tek farkı, ileti depolamanın sunucunun Zaman çizelgesindeki tüm verileri sürdürmesini gerektirmesidir ve mesajlar, özel bir sipariş kimliği gerektiren oturum sırasına göre depolanır.
Mesaj alımı Timeline tarafından sağlanan mesaj indeksine bağlı olarak, daha esnek bir çok alanlı indeksi destekleyebilir ve farklı hizmetlere göre daha yüksek bir serbestlik derecesi ile özelleştirilebilir.
Mesaj depolama modeli
Resim, Zaman Çizelgesine dayalı mesaj depolama modelini gösterir Mesaj depolama, her oturumun bağımsız bir Zaman Çizelgesine karşılık gelmesini gerektirir. Şekildeki örnekte gösterildiği gibi, A ve B / C / D / E / F'nin her ikisinin de konuşmaları vardır.Her sohbet bağımsız bir Zaman Çizelgesi'ne karşılık gelir.Her Zaman Çizelgesi bu konuşmadaki tüm mesajları içerir.Mesajlar, konuşma sırasına göre sıralanır. Son, her Zaman Çizelgesini kalıcı olarak saklayacaktır ve ayrıca mesaj dolaşımı özelliğine sahiptir.
Mesaj senkronizasyon modeli
Mesaj senkronizasyon modeli, mesaj depolama modelinden biraz daha karmaşıktır.Mesaj senkronizasyonunun genellikle iki farklı yöntemi vardır: farklı Zaman çizelgesi fiziksel modellerine karşılık gelen okuma difüzyonu (çekme modu olarak da adlandırılır) ve yazma difüzyonu (itme modu olarak da adlandırılır).
Şekil, okuma difüzyonu ve yazma difüzyonunun iki farklı senkronizasyon moduna karşılık gelen farklı Zaman çizelgesi modellerini göstermektedir.Şekildeki örneğe göre, A mesaj alıcısıdır ve B / C / D / E / F ile bir konuşması vardır. Görüşmedeki tüm yeni mesajların A'nın belirli bir sonuna senkronize edilmesi gerekir. Mesajların iki okuma difüzyon ve yazma difüzyon modunda nasıl senkronize edildiğini görelim.
IM uygulama senaryosu için, mesajlaşma sistemi genellikle yazma difüzyonunun mesaj senkronizasyon modunu seçer. IM senaryosunda, bir mesaj yalnızca bir kez oluşturulur, ancak birden çok kez okunur Bu, daha fazla okuma ve daha az yazma içeren tipik bir senaryodur.Mesaj okuma-yazma oranı yaklaşık 10: 1'dir. Okuma yayma senkronizasyon modu kullanılırsa, tüm sistemin okuma ve yazma oranı 100: 1'e genişletilecektir. Tek boyutlu okuma veya yazmanın tavana değmemesi için bu okuma ve yazma basıncını dengelemek için iyi optimize edilmiş bir sistem tasarlanmalıdır. Bu nedenle, IM sistemleri gibi senaryolarda, eşzamanlı yazma difüzyon modu genellikle okuma ve yazmayı dengelemek ve 100: 1 okuma ve yazma oranını 30:30 ile dengelemek için uygulanır. Elbette, eşzamanlı yazma difüzyon modu, on binlerce kişilik büyük gruplar gibi bazı aşırı senaryolarla da uğraşmak zorundadır. Bu aşırı yazma difüzyon senaryosu için, okuma difüzyonunun kullanılması dejenere olacaktır. Basit bir IM sistemi genellikle ürün düzeyinde bu kadar büyük bir grubun varlığını sınırlarken, gelişmiş bir IM sistemi için, bu tür ürünlerin ihtiyaçlarını karşılamak için eşzamanlı bir okuma-yazma difüzyon hibrit modu benimsenecektir. Karışık modda, farklı veri türlerine ve farklı okuma ve yazma yüklerine göre yazma difüzyonu veya okuma difüzyonu kullanılıp kullanılmayacağı belirlenir.
Tipik mimari tasarım
Şekilde, birkaç önemli bileşen içeren tipik bir mesaj sistemi mimarisi gösterilmektedir:
Çevrimiçi cihazlar için, mesaj sunucusu aktif olarak çevrimiçi cihaz tarafına itebilir. Çevrimdışı cihazlar için, oturum açtıktan sonra mesajları sunucuyla aktif olarak senkronize edecektir. Her cihaz en son mesajın sıra kimliğini yerel olarak saklayacak ve sıra kimliğinden sonra tüm mesajları sunucuya senkronize edecektir.
sonuç olarak
Bu makale temel olarak modern IM sistemindeki mesajlaşma sisteminin gerektirdiği yetenekleri tanıtmakta ve geleneksel mimari ile modern mimariyi karşılaştırmaktadır. Aşağıdaki derinlemesine tartışmayı kolaylaştırmak için, Tablestore tarafından tanıtılan Timeline modeli ve IM sistemindeki mesaj depolama ve mesaj senkronizasyon modelinin temel kavramları ve stratejileri tanıtıldı.Son olarak, tipik bir mimari tasarım tanıtıldı.
Eser sahibi: Los Wood
Bu makalenin kaynağı: Aliyun Yunqi Topluluğu
Kaynak bağlantı: https://yq.aliyun.com/articles/698301