Yazılım endüstrisinde, mimarinin ne olduğu hakkında birçok tartışma vardır ve herkesin kendi anlayışı vardır. Bu kralın söylediği yapı ile onun anladığı yapı ille de aynı değildir. Bu nedenle mimariyi tartışmadan önce öncelikle mimarinin kavramsal tanımını tartışıyoruz.Kavram insanların dünyayı ve iletişim araçlarını anlamalarının temelidir.Mimarlık kavramının anlaşılması farklıysa iletişim doğal olarak sorunsuz olmayacaktır.
Linux'un bir mimarisi, MySQL'in bir mimarisi ve JVM'nin de bir mimarisi var.Java geliştirme, MySQL depolama kullanan ve Linux üzerinde çalışan iş sistemlerinin de mimarileri var. Hangisine dikkat etmeliyim? Yukarıdaki sorunları açıklığa kavuşturmak için, birkaç ilgili ve benzer kavramı sıralamanız gerekir: sistem ve alt sistemler, modüller ve bileşenler, çerçeve ve mimari:
1.1. Sistem ve Alt Sistem
Sistem: Bir grup ilgili kişiden oluşan, belirli kurallara göre çalışan ve tek tek bileşenlerin bağımsız olarak tamamlayamayacağı görevleri tamamlayabilen bir grubu ifade eder.
Alt sistem: Aynı zamanda, çoğunlukla daha büyük bir sistemin parçası olan bir grup ilgili kişiden oluşan bir sistemdir.
1.2. Modüller ve bileşenler
Bunların hepsi, sistemi farklı açılardan ayıran sistemin bir parçasıdır. Modüller mantıksal birimlerdir ve bileşenler fiziksel birimlerdir.
Modül, sistemi mantıksal olarak ayrıştırmak, yani karmaşık sorunları basitleştirmek, bölmek ve ele geçirmektir. Modülün ayrıntı düzeyi büyük veya küçük olabilir ve bir sistem, birkaç alt sistem, belirli bir hizmet, işlev, sınıf, yöntem, işlev bloğu vb. Olabilir.
Bileşenler, uygulama hizmetlerini, veritabanlarını, ağları, fiziksel makineleri ve MQ, kapsayıcılar ve Nginx gibi teknik bileşenleri içerebilir.
1.3. Çerçeve ve mimari
Çerçeve, bileşen uygulamasının belirtimidir, örneğin: MVC, MVP, MVVM, vb., Açık kaynak çerçeveler gibi temel işlevleri sağlayan ürünlerdir: Ruby on Rails, Spring, Laravel, Django, vb. Doğrudan veya buna dayalı olarak kullanılabilir. İkincil gelişme.
Çerçeve normdur ve mimari yapıdır.
Burada mimariyi yeniden tanımlıyorum: yazılım mimarisi, bir yazılım sisteminin en üst düzey yapısını ifade eder.
Mimari, sistematik düşünme, artıları ve eksileri tartma ve nihai net sistem iskeletinden sonra mevcut kaynakların kısıtlamaları altındaki en makul karardır: alt sistemler, modüller, bileşenler. İşbirliği ilişkileri, kısıtlama özellikleri ve yol gösterici ilkelerin yanı sıra. Takımdaki herkese ideolojik düzeyde fikir birliğine varmaları için rehberlik edecek. Dört husus söz konusudur:
Bu nedenle, mimarın şunları yapma yeteneği vardır: İşletmeyi anlayın, genel durumu kontrol edin, uygun teknolojileri seçin, temel sorunları çözün ve Ar-Ge'nin uygulanmasına rehberlik edin .
Mimarinin özü, sistemi düzenli bir şekilde yeniden yapılandırarak, mevcut iş gelişimine uyum sağlamak ve hızla genişleyebilmektir.
Öyleyse mimari tasarım için ne tür bir sistem düşünülmelidir Teknoloji sebepsiz yere geliştirilmeyecek ve yönlendirilmeyecektir.Mimarlığın gelişimi ve talebi iş tarafından yönlendirilir.
Mimari tasarım tamamen iş amaçlıdır,
Mimari sınıflandırma, iş mimarisi, uygulama mimarisi, teknik mimari, kod mimarisi, dağıtım mimarisi olarak alt gruplara ayrılabilir
İş mimarisi stratejidir, uygulama mimarisi taktiktir ve teknik mimari ekipmandır. Bunların arasında uygulama mimarisi geçmişi birbirine bağlar, bir yandan iş mimarisinin uygulamasını üstlenir, diğer yandan teknoloji seçimini etkiler.
İşe aşina olun, bir iş mimarisi oluşturun, iş mimarisine dayalı uygun bir uygulama mimarisi oluşturun ve son olarak teknik mimariyi uygulayın.
Mevcut ihtiyaçlara uygun bir uygulama mimarisinin nasıl seçileceği ve mimarinin sorunsuz bir geçişini sağlamak için geleceğe nasıl bakılacağı, yazılım geliştiricilerin, özellikle mimarların derinlemesine düşünmesi gereken bir sorudur.
2.1. İşletme mimarisi (genel bakış mimarisi) :
İş planlaması, iş modülleri, iş süreçleri, tüm sistemin işini bölme, etki alanı modelini tasarlama ve gerçek işi soyut nesnelere dönüştürme dahil.
Optimal mimari yoktur, yalnızca en uygun mimari vardır.Tüm sistem tasarım ilkeleri, nihai hedef olarak iş problemlerini çözmeye dayanmalıdır. Asıl işin dışında kalan teknik duyarlılık mimarisi, çoğu zaman sistemi büyük bir deliğe getirir. İş kaprisli olmayan herhangi bir mimari Hepsi holigan.
Tüm sorunların ön koşulu, bugün karşı karşıya olduğumuz iş hacminin ne kadar büyük olduğunu, büyüme eğiliminin ne olduğunu ve yüksek eşzamanlılığı çözme sürecinin adım adım bir süreç olması gerektiğini bulmaktır. Makul bir yapı, iş gelişimini 1 ila 2 yıl önceden tahmin edebilir. Bu şekilde, teknolojiye öncülük eden iş büyümesinin etkisi karşılığında makul bir fiyat ödenebilir.
Jingdong iş yapısına bir göz atın (çevrimiçi paylaşım şeması):
2.2. Uygulama mimarisi (profil mimarisi, mantıksal mimari diyagramı da denir) :
Soyutlama katmanı ve programlama arayüzü dahil olmak üzere donanımdan uygulamaya soyutlama. Uygulama mimarisi ve iş mimarisi birbirini tamamlayan bir ilişki içindedir. İşletme mimarisinin her parçası bir uygulama mimarisine sahiptir.
benzer:
Uygulama mimarisi: Bağımsız bir konuşlandırılabilir birim olarak bir uygulama, sistem işlevi organizasyonunu, kod geliştirmeyi, dağıtımı ve işletim ve bakımı derinden etkileyen net bir sınır tanımlar.Uygulama mimarisi, sistemin hangi uygulamalara sahip olduğunu ve uygulamaların nasıl bölündüğünü tanımlar. Ve işbirliği. Buradaki sözde uygulama, her mantık modülü veya alt sistemidir.
Uygulama mimarisi şemasında iki temel nokta vardır:
. Sorumluluklar Bölümü: Uygulamaların sınırlarını tanımlayın (her mantıksal modül veya alt sistem)
. Sorumluluklar arasında işbirliği:
Katmanlama uygulamanın iki yolu vardır:
Uygulamaların kombinasyonu, uygulamaların karmaşık iş durumlarını tamamlamak için nasıl birlikte çalıştığını yansıtır; bu, esas olarak uygulamalar arasındaki iletişim mekanizması ve veri biçiminde yansıtılır. İletişim mekanizması eşzamanlı çağrı / eşzamansız mesaj / paylaşılan DB erişimi vb. Olabilir. Veri biçimi metin olabilir / XML / JSON / Binary vb.
Uygulamanın bölünmesi işletmeye dönüktür ve iş mimarisini yansıtır ve uygulamanın önyargısı teknik mimariyi etkileyen teknolojiye yöneliktir. Bölünme iş karmaşıklığını azaltır, sistem daha düzenli hale gelir ve teknik karmaşıklık artar ve sistem daha düzensizdir.
Uygulama mimarisinin özü, sistem bölünmesi yoluyla iş ve teknolojinin karmaşıklığını dengelemek ve sistemin dağınık olmamasını sağlamaktır.
Sistemin benimsediği ne tür bir uygulama mimarisi, kurumsal geliştirme aşaması ve iş özellikleri de dahil olmak üzere iş karmaşıklığından etkilenir; aynı zamanda, BT teknolojisi geliştirme aşaması ve dahili teknik personel seviyesi dahil olmak üzere teknik karmaşıklıktan etkilenir. İş karmaşıklığı (büyük iş hacmi dahil) kaçınılmaz olarak teknik karmaşıklığa yol açacaktır Uygulama mimarisinin amacı, teknik karmaşıklıktan kaçınırken ve iş mimarisinin uygulanmasını sağlarken iş karmaşıklığını çözmektir.
2.3. Veri Mimarisi
Veri mimarisi, veritabanının tasarımına rehberlik eder.Sadece geliştirmeye dahil olan veritabanı ve varlık modelini değil, aynı zamanda fiziksel mimaride veri depolamanın tasarımını da dikkate almak gerekir.
2.4. Kod mimarisi (geliştirme mimarisi olarak da adlandırılır) :
Alt sistem kod mimarisi esas olarak geliştiriciler için pratik rehberlik sağlar.Kod mimarisi yeterince tasarlanmamışsa, genel mimari tasarımını etkileyecektir. Örneğin, şirketteki farklı geliştirme ekipleri farklı teknoloji yığınları veya bileşenleri kullanır ve sonuç olarak şirketin genel mimari tasarımı kontrolden çıkacaktır.
Kod mimarisinin ana tanımı:
. Kod birimi:
. Kod birimi organizasyonu:
2.5. Teknik Mimari
Teknik mimari: Uygulama sistemini oluşturan gerçek işletim bileşenlerini (lvs, nginx, tomcat, php-fpm, vb.), Bu işletim bileşenleri arasındaki ilişkiyi ve donanıma dağıtım stratejisini belirleyin.
Teknik mimari, esas olarak sistemin işlevsel olmayan özelliklerini dikkate alır ve sistemin yüksek kullanılabilirliği, yüksek performansı, genişlemesi, güvenliği, ölçeklenebilirliği ve basitliği hakkında sistem düzeyinde bir kavrayışa sahiptir.
Sistem mimarisinin tasarımı, mimarın yazılım ve donanımın işlevleri ve performansı hakkında mükemmel bilgiye sahip olmasını gerektirir ki bu aynı zamanda mimari tasarım çalışmasındaki en zor görevdir.
2.6. Dağıtım topolojisi mimari diyagramı (gerçek fiziksel mimari diyagramı) :
Birkaç düğümün konuşlandırılması, düğümler arasındaki ilişki, sunucuların yüksek kullanılabilirliği, ağ arayüzleri ve protokoller vb. Dahil olmak üzere topoloji, uygulamanın nasıl çalıştığını, operasyonun performansını, sürdürülebilirliği ve ölçeklenebilirliği belirler. Yapı temeli. Bu şema esas olarak işletme ve bakım mühendislerinin hedefidir.
Fiziksel mimari, temel olarak donanım seçimi ve topolojiyi, yazılımın donanımla eşleştirilmesini ve yazılım ile donanımın karşılıklı etkisini dikkate alır.
Göstermek için piramidin mimari seviyesini kullanıyoruz, üst seviye alt seviyeyi içeriyor:
Stratejik tasarım ve taktik tasarım
Mimari piramidine dayanarak, sistem mimarisinin stratejik tasarımı ve taktik tasarımının mükemmel kombinasyonuna sahibiz:
İş mimarisi verimliliktir, uygulama mimarisi üretim ilişkileridir ve teknik mimari üretim araçlarıdır. İş mimarisi, uygulama mimarisini belirler ve uygulama mimarisinin iş mimarisine uyarlanması gerekir ve iş mimarisinin sürekli gelişimiyle, uygulama mimarisi sonunda teknik mimarinin temeline oturur.
Mimarinin evrimi: tek uygulama dağıtılmış uygulama hizmeti mikro hizmet
4.1. Tek uygulama
İşletmenin başında iş görece basittir.Sadece basit bir senaryo uygulanır.Uygulama hizmeti veri ekleme, silme, değiştirme ve basit mantığı destekler.Tek bir uygulama gereksinimleri karşılayabilir.
Tipik bir üç seviyeli mimari, ön uç (Web / mobil terminal) + ara iş mantığı katmanı + veritabanı katmanı. Bu, tipik bir Java Spring MVC veya Python Django çerçeve uygulamasıdır. Mimari diyagram aşağıdaki gibidir:
Monolitik uygulamalar için, fonksiyonel olmayan gereksinimler:
Monolitik uygulamaların devreye alınması ve test edilmesi daha kolaydır.Projenin ilk aşamalarında, monolitik uygulamalar iyi çalışabilir. Bununla birlikte, talep artmaya devam ettikçe, geliştirme ekibine giderek daha fazla insan katılıyor ve kod tabanı hızla genişliyor. Yavaş yavaş, tekli uygulamalar gittikçe daha fazla şişirilir, sürdürülebilirlik ve esneklik kademeli olarak azalır ve bakım maliyetleri gitgide yükselir. Monolitik uygulamaların bazı dezavantajları şunlardır:
4.2. Dağıtılmış
İşin derinleşmesiyle birlikte, işletme giderek daha fazla ürün işlevine ihtiyaç duyuyor ve her bir iş modülünün mantığı daha karmaşık hale geldi ve işin derinliği ve genişliği artarak tek uygulamayı daha fazla şişirilmiş, sürdürülebilir ve Esneklik kademeli olarak azaltılır, yeni işlevler ekleme geliştirme döngüsü uzar ve uzar ve bakım maliyeti giderek yükselir.
Şu anda, sistemin iş fonksiyonu modüllerine göre bölünmesi gerekir ve her bir modüle dağıtılmış bir sisteme servis verilir. İş modülleri farklı sunuculara yerleştirilir ve her bir iş modülü, arabirimler aracılığıyla veri alışverişi yapar.
Monolitik mimari ile karşılaştırıldığında, bu mimari yük dengeleme yetenekleri sağlar, sistem yük kapasitesini büyük ölçüde geliştirir ve web sitesinin yüksek eşzamanlılık gereksinimlerini çözer. Aşağıdaki özellikler de vardır:
4.3. Mikro Hizmetler
İş modeli gittikçe daha karmaşık hale geldikten hemen sonra, üyelik seviyelerinin fiyat sınıflandırması, erişim kanalları (uygulama veya PC), satış yöntemleri (grup satın alma veya sıradan) vb. Gibi siparişler, ürünler, envanter ve fiyatlar gibi çeşitli modüller derinlemesine idi ve çok sayıda Fiyat promosyonu, bu kurallar karmaşıktır ve birbiriyle çatışması kolaydır.Her işletmeye dağılmış olan fiyat mantığının tek tip yönetilmesi ve şeffaf bir şekilde temel fiyat hizmetleri şeklinde üst düzey uygulamalara sunulması ve mikro çekirdek hizmet mimarisi yani mikro çekirdek haline getirilmesi gerekmektedir. hizmet.
Mikro hizmetlerin özellikleri:
Mikro hizmetlerin pek çok çekici yeri olmasına rağmen, ücretsiz bir öğle yemeği değildir ve kullanmanın bir bedeli vardır. Mikro hizmet mimarisini kullanmanın zorlukları.
Mimari işletmeye hizmet eder.Optimum mimari yoktur, yalnızca en uygun mimari vardır.Mimari, rasyonalitesini ölçmek için her zaman verimliliği, kararlılığı ve güvenliği hedef alır.
Makul mimari tasarım:
5.1. İş perspektifi ihtiyacı
5.2. İş dışı ihtiyaçlar perspektifi
. Kararlılık. dizin:
. Yüksek verimlilik endeksi:
. Güvenlik indeksi
Yukarı çık ve aşağı in
Yaygın hatalar
7.1. Mimari evrimi
7.2. Mimari desen
Katmanlama: yatay katmanlama: uygulama katmanı, hizmet katmanı, veri katmanı
Bölme: Dikey bölme: Bölme işlevleri ve hizmetleri
dağıtılmış
Küme: Eşzamanlılığı ve kullanılabilirliği iyileştirin
Önbelleğe alma: Sistem performansını optimize edin
Asenkron: sistemin bağlantısını azaltın
Yedeklilik: Sistem kullanılabilirliğini sağlamak için soğuk bekleme ve çalışırken bekleme
Otomasyon: yayın, test, dağıtım, izleme, alarm, yük devretme, arıza kurtarma
Emniyet:
7.3. Mimarinin temel unsurları
Yüksek performans: web sitesinin ruhu
Kullanılabilirlik: Sunucunun kapanmamasını sağlamak için, genellikle yedekleme sunucularının yedekli dağıtımıyla gerçekleştirilir.
Ölçeklenebilirlik: İster bir küme oluşturun, ister trafikteki büyük ölçekli artışa hızlı bir şekilde yanıt verin, yeni makineler eklemek kolaydır
Küme
Ölçeklenebilirlik: Esas olarak işlevsel gereksinimlere odaklanın, iş genişlemesine yanıt verin ve iş değişikliklerine hızla yanıt verin. Açma ve kapama prensibinin takip edilip edilmeyeceği, sistem kuplajına bağlıdır
Güvenlik: Web sitesinde, çeşitli güvenlik açıklarının engellenip engellenmediğine, yapının mevcut sınırlamaya ulaşıp ulaşamayacağına ve ddos saldırılarını önleyip engellemediğine bakılmaksızın çeşitli saldırılar.
1. "Büyük Web Sitelerinin Teknik Mimarisi: Temel İlkeler ve Örnek Olaylar"
Bu, büyük web sitelerinin teknik mimarisini sistematik olarak tanıtan eski bir kitaptır.Anlaşılması kolaydır ve bilgelikle doludur.Daha önce web sitesi geliştirme ile hiç temas kurmamış olsanız bile, ortak web sitesi teknik mimarisini ve uygulamalarını ilk birkaç bölümü okuyarak hızlı bir şekilde edinebilirsiniz. Sahneler. Bu harika.
2. "Milyar düzeyinde trafik web sitesi mimarisinin temel teknolojisi"
"Büyük ölçekli web sitesi teknolojisi mimarisi" ile karşılaştırıldığında, Kaitao'nun "Yüz Milyon Trafik Web Sitesi Mimarisinin Temel Teknolojisi" ayrıntıları uygular. Web sitesi mimarisinde yaygın olarak kullanılan önbelleğe alma, kuyruklar, iş parçacığı havuzları, aracılar gibi çeşitli teknolojiler ... , Hepsi hakkında konuşuldu ve temel kod ile. Nginx yapılandırması bile var!
Yüksek trafikli web sitelerini uygularken referans teknolojiler ve kodlar bulmak istiyorsanız, bu kitap en uygun olanıdır.
3. "Mimarlık Gelecektir"
Bu, belirli teknik düzeyin ötesine geçen, mimari sorunların temel nedenlerini analiz etmeye odaklanan ve ekipleri nasıl yöneteceğimizi, yöneteceğimizi, organize edeceğimizi ve görevlendireceğimizi anlamamıza yardımcı olan "kutsal bir kitaptır".
4. "Dağıtılmış Hizmet Mimarisi: İlke, Tasarım ve Gerçek Savaş"
Bu kitap, dağıtılmış hizmet mimarisinin ilkelerini ve tasarımını kapsamlı bir şekilde tanıtır ve yazarın mikro hizmet mimarisini uygulama sürecindeki pratik deneyimiyle birleştirir, çevrimiçi hizmetlerin sağlığını ve güvenilirliğini sağlamak için en iyi çözümü özetler. Mimari düzeyinde, pratiktir. Ağır iş türü.
5. "Konuşma Mimarisi"
Bu, mimarlık üzerine ilahi bir kitap olarak değerlendirilebilir ... Mimarinin başlangıcından, işin ayrılığından, mimarinin amacından, mimarın rolünden ve mimarın mimariyi nasıl uyguladığından bahseder ... Şiddetle tavsiye edilir.
Bununla birlikte, mimaride pratik deneyimi olmayanlar için, bu kitap bu kitabın birçok kavram ve birkaç gerçek savaşla nispeten hayal ürünü olduğunu düşünebilir. Ancak bir veya iki proje mimarisi deneyiminiz varsa, kitapta tartışılan mimarlık felsefesine derinden katılacaksınız.
6. "Yazılım Mimarları için 12 Uygulama"
Çoğu zaman sözde "teknik cam tavan" aslında yumuşak becerilerin eksikliğidir. Bu beceriler öğrenilebilir ve bilgi eksikliği, değişmeye karar verme çabalarıyla giderilebilir.
Yazar: hız düzenlemesi
Orijinal: https://blog.csdn.net/hguisu/article/details/78258430