Ölçeklenebilir büyük ölçekli bir web sitesi mimarisi nasıl elde edilir

Ölçeklenebilir büyük ölçekli bir web sitesi mimarisi nasıl elde edilir

Web sitesinin ölçeklenebilir mimari tasarımı, mevcut sistem üzerinde minimum etki ile sistem işlevlerini sürekli olarak genişletebilir ve iyileştirebilir.

Burada kolayca karıştırılan "ölçeklenebilirlik" ve "ölçeklenebilirlik" kavramları ayrıntılı olarak açıklanmıştır:

Ölçeklenebilirlik

Performans şudur: altyapının sık sık değiştirilmesi gerekmez, uygulamalar daha az bağımlıdır veya bağlanmıştır ve talep değişikliklerine hızla yanıt verebilir. Uzatmaya açık ve değişiklik için kapalıdır. Mimari tasarım, gelecekteki fonksiyonların ölçeklenebilirliğini hesaba katacaktır, bu nedenle sistem yeni fonksiyonlar eklediğinde, mevcut sistemin yapısını ve kodunu değiştirmeye gerek kalmaz.

Ölçeklenebilirlik

Bu, sistemin kendi kaynak ölçeğini artırarak (veya azaltarak) işi işleme yeteneğini geliştirdiği (veya azalttığı) anlamına gelir. Bu artış veya azalma orantılıysa, doğrusal ölçeklenebilirlik olarak adlandırılabilir. Genellikle, küme, sistemin genel iş hacmini iyileştirmek için sunucu sayısını artırmak için kullanılır.

1 Ölçeklenebilir bir web sitesi mimarisi oluşturun

Bir geliştirme çerçevesinin, tasarım modelinin veya programlama dilinin artılarını ve eksilerini ölçmek için önemli bir ölçü, yazılım geliştirme sürecini ve yazılım ürünlerini daha az bağlantılı hale getirip getiremeyeceğidir.

Düşük kuplajlı bir sistemin genişletilmesi ve yeniden kullanılması daha kolay olduğu için geliştirme sürecini ve bakımı da kolaylaştırır. Ancak, sistemin çeşitli modüllerinin nasıl ayrıştırılacağı, her modülün arayüzlerinin nasıl tanımlanacağı, eksiksiz bir sistem oluşturmak için farklı modüllerin nasıl yeniden kullanılacağı ve birleştirileceği, yazılım tasarımının en zorlu kısmı budur.

Bir yazılım mimarının en büyük değeri, büyük bir sistemi N düşük kuplajlı alt modüle ayırma yeteneğinde yatmaktadır.Bu alt modüller, yatay iş modüllerini ve dikey temel teknoloji modüllerini içerir. Bu yetenek, profesyonel teknik beceri ve deneyimden, iş senaryolarının anlaşılmasından, insan doğasının kavranmasından ve dünya anlayışından gelir.

Ölçeklenebilir bir web sitesi mimarisi oluşturmanın ana fikri modülerliktir ve bu temelde modüller arasındaki bağlantıyı azaltın ve modüllerin yeniden kullanılabilirliğini iyileştirin.

Yazılım, katmanlama ve bölümleme yoluyla birkaç düşük bağlantılı, bağımsız bileşen modülüne bölünebilir ve daha sonra, bu bileşen modülleri arasında mesaj geçişi veya bağımlı çağrılar yoluyla tam bir sistem halinde toplanabilir.

Bu modüller, dağıtılmış dağıtım yoluyla bağımsız sunuculara yerleştirilebilir. Modüller arasındaki kuplaj ilişkisinin bu fiziksel olarak ayrılması, kuplajı daha da azaltabilir.

Dağıtılmış dağıtımdan sonra modüllerin toplama yöntemleri şunlardır:

* Dağıtılmış mesaj kuyruğu.

* Dağıtılmış hizmetler.

1 Eşleşmeyi azaltmak için dağıtılmış mesaj kuyruklarını kullanın

Modüller arasında doğrudan bir çağrı ilişkisi yoksa, modülleri eklemek veya değiştirmek diğer parçalar üzerinde en az etkiye sahip olacaktır, bu nedenle ölçeklenebilirlik doğal olarak daha iyidir.

1.1 Olay Odaklı Mimari

Olay güdümlü mimari, düşük kuplajlı modüller arasında olay mesajlarının iletilmesi, modüller arasındaki gevşek bağlantının sürdürülmesi ve olay mesajları aracılığıyla modüller arasındaki iletişimin tamamlanması anlamına gelir. Olay güdümlü mimarinin en yaygın uygulaması, dağıtılmış mesaj kuyruklarını kullanmaktır.

Mesaj kuyruğu yayınlama-abone olma modeline göre çalışır Mesaj göndericisi mesajı yayınlar ve bir veya daha fazla mesaj alıcısı mesaja abone olur. Mesajı gönderen, mesajı dağıtılmış mesaj kuyruğuna gönderdikten sonra, işlem tamamlanır ve ardından mesaj abonesi, işlenmek üzere mesajı mesaj kuyruğundan alır. Yeni eklenen bir işletme için, belirli bir mesajla ilgilendiğiniz sürece, mesaja abone olabilirsiniz ve bunun, sistemin ölçeklenebilirlik tasarımını gerçekleştirmek için orijinal sistem ve iş üzerinde hiçbir etkisi yoktur.

Mesaj alıcısı ayrıca alınan mesajı yeniden oluşturabilir, yeni bir mesaj tipi tanımlayabilir ve ardından mesajı bu yeni mesaj tipine abone olan alıcıya gönderebilir. Dolayısıyla, mesaj nesnelerine dayalı olaya dayalı mimari bir dizi işlem olabilir.

Mesaj göndericisi beklemeden geri dönebildiğinden, sistem daha iyi bir yanıt süresine sahiptir ve yoğun ziyaretler sırasında mesaj geçici olarak mesaj kuyruğunda depolanabilir, böylece veritabanının depolama yükü baskısı azaltılabilir.

1.2 Dağıtılmış mesaj kuyruğu

Kuyruk ilk giren ilk çıkar veri yapısıdır, mesaj kuyruğunu bağımsız bir sunucuya yerleştirebiliriz. Uygulama, mesaj erişim işlemlerini gerçekleştirmek için uzaktan erişim arayüzü üzerinden mesaj kuyruğunu kullanır, böylece dağıtılmış asenkron çağrıları gerçekleştirir:

En popüler dağıtılmış mesaj kuyruğu Apache ActiveMQ'dur.

Mesaj kuyruk sunucusundaki veriler anlık işlem olarak kabul edilebildiğinden, Ölçeklenebilirlik Yukarıda, yeni sunucuyu dağıtılmış ileti kuyruğu kümesine ekledikten sonra, yalnızca üretici sunucuyu ileti kuyruğunun sunucu listesini değiştirmesi için bilgilendirmemiz gerekir. O (_) O ~

içinde Kullanılabilirlik Yukarıda, bellek kuyruğu doluysa, mesaj diske yazılmalıdır, böylece mesaj itme modülü bellek kuyruğundaki mesajları işlemeyi bitirdiğinde, işlemeye devam etmek için diskteki mesajları kuyruğa yükleyecektir.

Mesaj kuyruk sunucusunun kesinti süresinin neden olduğu mesaj kaybını önlemek için, mesaj, mesaj tüketici sunucusu tarafından fiilen işlenene kadar silinmeyecek şekilde mesaj üretici sunucusunda depolanacaktır. Mesaj kuyruğu sunucusu kapanırsa, üretici sunucu mesajları yayınlamak için dağıtılmış mesaj kuyruğu sunucu kümesindeki diğer sunucuları seçecektir.

Dağıtılmış ileti kuyrukları, ESB (Kurumsal Hizmet Veriyolu) ve SOA (Hizmet Odaklı Mimari) gibi çok karmaşık olabilir. MySQL'i dağıtılmış bir mesaj kuyruğu olarak kullanmak gibi çok basit de olabilir: mesajın üreticisi mesajı veritabanına bir kayıt olarak yazar ve tüketici veritabanını sorgular (veritabanı tablosuna yazılan kaydın zaman damgasına göre sıralanır), bu dağıtılmış bir mesaj kuyruğudur La. Olgun MySQL çalıştırma ve bakım yöntemleriyle birleştiğinde, daha yüksek bir kullanılabilirlik ve performans indeksi de elde edilebilir O (_) O ~

2 Yeniden kullanılabilir bir iş platformu oluşturmak için dağıtılmış hizmetleri kullanın

Dağıtılmış hizmetler, arabirimler aracılığıyla sistemin birleştirilmesini azaltabilir ve farklı alt sistemler hizmetleri aramak için aynı arabirim açıklamasını kullanır.

Web sitesi işlevlerinin artan karmaşıklığıyla, sistem kademeli olarak çok sayıda uygulamayı ve hizmet bileşenini bir araya getiren bir dev haline gelecektir. Böyle bir sistem geliştirme, bakım ve dağıtımda büyük sorunlar yaratacaktır:

* Derlemesi ve dağıtımı zor.

* Kod şubesi yönetimindeki zorluklar: yeniden kullanılan kod modülleri birden çok ekip tarafından korunur ve değiştirilir, bu nedenle kod birleştirildiğinde her zaman çakışmalar meydana gelir.

* Bitkin veritabanı bağlantıları: Bir uygulamanın 10 veritabanı bağlantısı olduğunu varsayarsak, yüzlerce sunucu kümesine sahip bir uygulama, veritabanında binlerce bağlantı oluşturacaktır.

* İş zorlukları eklendi. Böylesine sürekli kesen ve kaotik bir sisteme yeni işler eklemek mi? Şaka yapıyorum O (_) O ~

Bu nedenle, sistemin kuplajını azaltmak için modülleri bağımsız olarak bölmemiz ve yerleştirmemiz gerekiyor:

* Dikey, büyük bir uygulamayı birden çok küçük uygulamaya bölün. Yeni iş nispeten bağımsızsa, onu doğrudan bağımsız bir Web uygulaması olarak tasarlayın ve devreye alın.

* Yeniden kullanılan işletmeyi yatay olarak bölün ve bağımsız olarak dağıtılmış bir hizmet olarak dağıtın Yeni işletmenin hızlı bir şekilde bir uygulama sistemi oluşturmak için bu dağıtılmış hizmetleri çağırması yeterlidir. Modüldeki iş mantığı değişse bile arayüz tutarlı olduğu sürece diğer modülleri etkilemeyecektir.

Dikey bölme nispeten basittir.İşin ayrılmasıyla, daha az ilgili olan iş, onu bağımsız bir Web uygulaması yapmak için ayrılır. Yatay bölme, yalnızca yeniden kullanılabilir işletmelerin tanımlanmasını, hizmet arabirimlerinin tasarlanmasını ve hizmetler arasındaki bağımlılıkların standartlaştırılmasını değil, aynı zamanda eksiksiz bir dağıtılmış hizmet yönetimi çerçevesi gerektirir.

2.1 Web Hizmeti Dağıtılmış Hizmet

Web Hizmeti, kurumsal uygulama sistemi geliştirme alanındaki en moda sözcüklerden biriydi. Heterojen sistemleri entegre etmek ve dağıtılmış sistemler oluşturmak için kullanılır:

Hizmet sağlayıcı, kayıt defterine (Hizmet Aracısı) sağlayabileceği hizmet arabirimi içeriğini açıklamak için WSDL'yi (Web Hizmetleri Açıklama Dili, Web Hizmeti Açıklama Dili) kullanır ve ardından kayıt defteri UDDI'yi (Evrensel Açıklama, Keşif ve Entegrasyon, birleştirilmiş açıklama, Keşif ve Entegrasyon) Servis sağlayıcılar tarafından sağlanan yayın hizmetleri. Hizmet istemcisi hizmeti kayıt defterinden aldıktan sonra, hizmeti kullanmak için SOAP (Basit Nesne Erişim Protokolü) aracılığıyla hizmet sağlayıcıyla iletişim kurar.

Web Hizmeti, olgun teknik özelliklere ve uygulamalara sahip olmasına rağmen, aşağıdaki dezavantajlara sahiptir:

1. Şişirilmiş kayıt ve keşif mekanizması.

2. Verimsiz XML serileştirme yöntemleri.

3. Pahalı HTTP uzaktan iletişimi.

4. Karmaşık dağıtım ve bakım yöntemleri.

Bu sorunlar, Web Hizmetinin yüksek performans, yüksek kullanılabilirlik, kolay dağıtım ve kolay bakım için büyük web sitelerinin gereksinimlerini karşılamasını zorlaştırır.

2.2 Büyük web sitelerinde dağıtılmış hizmetler için gereksinimler

Dağıtılmış hizmet çerçevesinin aşağıdaki özellikleri destekleyebilmesi gerekir:

* Yük dengeleme - Hizmet talep edenler, popüler hizmetlere (oturum açma veya emtia hizmetleri gibi, bu hizmetler bir kümede dağıtılır) erişmek için yapılandırılabilir yük dengeleme algoritmaları kullanabilir.

* Yük Devretme-Yeniden Kullanılabilir hizmetler, birden çok uygulama tarafından çağrılır Hizmet kullanılamadığında, birçok uygulamanın kullanılabilirliğini etkileyecektir. Bu nedenle, nadiren erişilen hizmetler bile küme dağıtımı gerektirir. Dağıtılmış hizmet çerçevesi bir hizmetin kullanılamadığını tespit ettiğinde, genel olarak yüksek kullanılabilirlik sağlamak için diğer hizmet örneklerine geçecektir.

* Verimli uzaktan iletişim

* Heterojen sistemleri entegre edin

* Uygulamalara minimum düzeyde müdahale - Dağıtılmış hizmet çerçevesi, hizmetlerin aşamalı gelişimini ve yinelemesini destekler (hizmet modüllerinin hem merkezi dağıtımı hem de dağıtılmış dağıtımı desteklemesi gerekir).

* Sürüm yönetimi web sitesi hizmetleri kesintiye uğratılamaz, bu nedenle dağıtılmış hizmet çerçevesinin hizmetin birden fazla sürümünün yayınlanmasını desteklemesi gerekir. Servis sağlayıcı arayüzün yeni sürümünü yükselttiğinde ve yayınladığında, talepte bulunan kişi arayüz yükseltmesini çağırana kadar hizmetin eski sürümünü desteklemeye devam edecektir. , Hizmetin eski sürümünü kapatır.

* Gerçek zamanlı izleme, servis sağlayıcıların ve arayanların çeşitli göstergelerini izleyin ve işletim, bakım ve operasyonlar için destek sağlar.

2.3 Dağıtılmış Hizmet Çerçevesinin Tasarımı

Büyük ölçekli web siteleri, SOA'larını (Servis Odaklı Mimari, servis odaklı mimari) oluşturmak için daha basit ve daha verimli bir dağıtılmış servis çerçevesine ihtiyaç duyar. Şu anda, Çin'deki birçok başarılı uygulama vakasına sahip açık kaynaklı dağıtılmış hizmet çerçevesi, Alibaba'nın Dubbo'sudur.

Hizmet tüketicisi, hizmeti arabirim aracılığıyla kullanır ve arabirim, belirli hizmeti proxy aracılığıyla yükler, bu yerel bir kod veya uzak hizmet olabilir, böylece uygulama daha az müdahaleci olur.

İstemci modülü, hizmet sağlayıcı listesini hizmet kaydı aracılığıyla yükler (hizmet sağlayıcı, başlangıçtan sonra hizmet kayıt defteri ile sağlayabileceği hizmet arabirimlerinin listesini otomatik olarak kaydeder) ve ardından hizmet çağrısı isteğini yapılandırılmış yük dengeleme stratejisine göre belirli bir hizmet sağlayıcıya gönderir. Sunucu. Servis çağrısı başarısız olursa, istemci modülü, servis sağlayıcıları listesinden aynı servisi sağlayabilecek bir sunucuyu otomatik olarak seçer, yani servisin yüksek kullanılabilirliğini sağlamak için otomatik yük devretme.

Dubbo, NIO iletişim çerçevesini kullanır, bu nedenle yüksek ağ iletişim performansına sahiptir.

4 Ölçeklenebilir veri yapısı

NoSQL veritabanı kullanın (Cassandra gibi) ColumnFamily (Column Ailesi) teknolojisi ölçeklenebilir veri yapısı tasarımı sağlayabilir. Sütun ailesine yönelik seyrek matris için bir depolama formatıdır.

Tabloyu oluşturmak için sadece ColumnFamily adını belirtin. Veri yazılırken alanlar belirtilebilir, bu şekilde bir tablo milyonlarca alan içerebilir. Bu, uygulamanın veri yapısının isteğe göre genişletilmesine izin verir. Sadece herhangi bir alan adını ve sorgulanacak değeri belirtin.

5 Bir ekosistem oluşturmak için açık bir platform kullanın

Sadece kullanıcılar istedikleri değeri aldıklarında, web sitesinin hizmetlerini kullanmaya istekli olacaklar ve böyle bir web sitesi varoluş anlamına gelir. Ancak sonuçta, bir web sitesi tüm kullanıcıların ihtiyaçlarını karşılayamaz.

Kullanıcılar, web sitesi tarafından sağlanan değer için ödeme yapmazlar, bu nedenle web sitesinin para kazanmak için daha fazla katma değerli hizmetler sağlaması gerekir. Uzun kuyruk etkisine göre, katma değerli hizmetlerin sayısı ne kadar fazlaysa ve türü ne kadar fazlaysa o kadar karlı olur. Ancak bir web sitesinin kendi kendine geliştirebileceği katma değerli hizmetler de sınırlıdır.

Kullanıcılara daha iyi hizmet verebilmek ve onlar için daha fazla katma değerli hizmet geliştirmek için, büyük web siteleri, web sitesinin iç hizmetlerini arayüzler halinde kapsayacak ve bunları harici üçüncü taraf geliştiricilerin kullanımına açacaktır.Bu platforma açık platform denir. Üçüncü taraf geliştiriciler, kullanıcılara daha fazla değer sağlamak için uygulamalar (APP gibi) veya web siteleri geliştirmek için bu açık arabirimleri kullanabilir. Web siteleri, kullanıcılar, üçüncü taraf geliştiriciler

Karşılıklı bağımlılık, bir ekosistem oluşturmak.

Açık platform, web sitesinin iç ve dış etkileşimi için arayüzdür. Dış yüz, birçok üçüncü taraf geliştiriciyle karşılaşacak ve dahili yüz, web sitesinde birçok iş hizmetiyle karşılaşacaktır. Açık platformun mimarisi şu şekildedir:

  • API arayüzü: Geliştiricilere sunulan ve RESTful, WebService, RPC vb. Şeklinde olabilen bir dizi API.
  • Protokol dönüşümü: Çeşitli API'lerin girişini dahili servisler tarafından tanınabilecek bir forma dönüştürün ve dahili servislerin dönüş bilgilerini API formatına alın.
  • Güvenlik: Kimlik belirleme ve erişim kontrolü gibi araçlara ek olarak, platform kaynaklarının üçüncü taraf uygulamalar tarafından makul ve adil bir şekilde kullanılmasını ve web sitesinin kendi dahili hizmetlerinin harici uygulamalar tarafından aşağıya çekilmemesini sağlamak için erişim bant genişliği kısıtlanmalıdır.
  • Denetim: üçüncü taraf uygulamaların ve faturalandırmanın erişim durumunu izleyin.
  • Yönlendirme: Açık platformun çeşitli erişim yollarını belirli dahili hizmetlere eşleyin.
  • Süreç: Bir grup gevşek hizmeti yeni bir bağlama duyarlı hizmet olarak düzenleyin ve geliştiricilerin kullanması için harici arabirimler sağlayın.

Bilmek istiyorsanız, bana özel olarak güvenebilirsiniz!

1 SpringBoot + Yüksek Eşzamanlı Mesaj İşleme EDM? Projesi Gerçek Savaş

2 SpringBoot ELK? Dağıtılmış veri analizi

3 Netty? Yüksek Eş Zamanlı UTS? Projesi Gerçek Savaş

4 SpringCloud® Microservice + NoSQL + yük dengeleme platformu tasarımı

MIUI 11 kullanıcı fikirlerini talep ediyor! En çok hangi özelliği istiyorsun? İlk sırada yer alması en kolay ve en zor olanı
önceki
"WeChat fission" yazılımı belirdi: kodu taradıktan sonra arkadaşlarınızı otomatik olarak taciz edin
Sonraki
"Wolf Warriors 2" Leng Feng Wu Jing'in cep telefonu satışta mı? ! Açıkçası sadece cep telefonu üreticileri ateşli değil
WeChat resmi web sitesi alan adını değiştirdi, wechat.com resmen yayına girdi, netizenler: Nasıl oldu?
Meizu Zero, gözeneksiz bir konsept yaratarak sessizce piyasaya sürüldü, konferanstaki ürün özelliklerinin özeti
Hadoop çekirdek projesi
Meizu Zero aslında bir PPT telefonu değil, 30 Ocak'ta kitle fonlamasına başlayacak
Kısa video uygulamaları çok sıcak ve Zhihu bu pastayı da bölmek istiyor gibi görünüyor, yani ekran görüntüleri açığa çıkıyor
MIUI10 ekran görüntüsü geliyor, MIX3 güncellemelerinin ilk partisi
ELK teknoloji yığını (ElasticSearch, Logstash, Kibana, dikey arama motoru)
İPad pro10.5 Meiya fiyatı 200 dolara kadar düşürdü ve indirim mi yapılacak?
Dünyada 9 yıllık yıllık iş hacmi, ülkenin kağıtsız gümrük işlemlerini ilk gerçekleştiren ülkesi ... Bu 1 No'lu ürünler Yangtze Nehri Deltası'nın entegrasyonuna ne getirebilir?
B istasyonundaki oylama o kadar utanç verici ki, kullanıcıların% 62'si B istasyonunun kapatılması için oy mu verdi?
Bu maden nasıl "lekesiz" olabilir? Huzhou'daki Yeşil Madenlerin Ekolojik Yolu
To Top