Sıfırdan yeni başlayanlar için bir arka uç teknoloji yığını oluşturun

Arka uç teknoloji yığınından bahsetmişken, bu resim akla geliyor mu?

Biraz baş döndürücü, aşağıdaki sadece kullanacağımız bazı dillerin bir derlemesidir ve dil seviyesinin sadece bir parçasıdır.Tüm arka uç teknoloji yığını söz konusu olduğunda, bu sadece bir başlangıç.Dilden başlayarak, pek çok içerik var. Bugün bahsedeceğimiz arka uç, büyük bir arka uç kavramıdır.Sunucudaki her şey, kullanılan çerçeve, dil, veritabanı, hizmet, işletim sistemi vb. Arka uca aittir.

Tüm arka uç teknoloji yığınını anladığım 4 seviye var:

  • Dil: Hangi geliştirme dillerinin kullanıldığı, örneğin: C ++ / Java / Go / PHP / Python / Ruby, vb .;
  • Bileşenler: Hangi bileşenler kullanılır, örneğin: MQ bileşenleri, veritabanı bileşenleri, vb .;
  • Süreç: ne tür bir süreç ve spesifikasyon, örneğin: geliştirme süreci, proje süreci, sürüm süreci, alarm sürecini izleme, kod spesifikasyonu, vb .;
  • Sistem: Sistematik yapı, yukarıdaki süreç bir sistem tarafından garanti edilmelidir, örneğin: serbest bırakma sürecini düzenleyen bir sürüm sistemi, bir kod yönetim sistemi, vb .;

Yukarıdaki dört içerik düzeyini birleştiren tüm arka plan teknolojisi yığınının yapısı Şekil 2'de gösterilmektedir:

Yukarıdaki içeriğin tamamının sıfırdan oluşturulması gerekiyor Startup'larda büyük şirketlerin tam bir altyapısı yok, kendimizi açık kaynak dünyasından, bulut hizmet sağlayıcılarından bir araya getirip kendimize uygun bir tane geliştirmemiz gerekiyor. Hedeflerimize ulaşmak için bileşenler veya sistemler. Sistemleri ve bileşenleri tek tek seçer ve sonunda arka plan teknoloji yığınımızı oluştururuz.

Sistem bileşenlerinin seçimi

1. Proje yönetimi / Hata yönetimi / Sorun yönetimi

Proje yönetimi yazılımı, tüm işletmenin ihtiyaçları, sorunları, süreçleri vb. İçin merkezi bir yerdir.Bölümler arası iletişim ve işbirliğimizin çoğu proje yönetimi araçlarına dayanır. Kullanılabilen bazı SaaS proje yönetimi hizmetleri var, ancak çoğu zaman ihtiyaçları karşılamıyor.Şu anda bazı açık kaynak projeleri seçebiliriz.Bu projelerin kendileri belirli özelleştirme yeteneklerine sahiptir ve zengin eklentiler kullanılabilir. Başlangıçların genel ihtiyaçları temelde Memnun olunabilir, yaygın olarak kullanılan öğeler aşağıdaki gibidir:

  • Redmine: Ruby'de geliştirildi, kullanılabilen, alanları özelleştirebilen, proje yönetimini, hata takibini, WIKI'yi ve diğer işlevleri entegre edebilen birçok eklenti var, ancak pek çok eklenti N yıl içinde güncellenmedi;
  • Phabricator: Facebook'un önceki dahili aracı olan PHP ile geliştirilen bu aracı geliştiren arkadaşlar, bu yazılımı kendileri yapması için bir şirketten ayrıldı, entegre kod barındırma, kod inceleme, görev yönetimi, belge yönetimi, sorun izleme ve diğer işlevler, güçlü Daha çevik ekipler için önerilir;
  • Jira: Java'da geliştirilen, proje yönetimi için kullanılabilen ve daha güçlü olan bölümler arası iletişim senaryolarına da uygulanabilen kullanıcı hikayeleri, görev bölme, bitirme çizelgeleri vb. Var;
  • Wukong CRM: Bu proje yönetimi değil, bu müşteri yönetimi. Buraya koymamın nedeni To B girişimlerinde müşterilerin çoğu zaman bir şeyler yapmanın özü olması ve proje yönetimi ve sorunların takip edilebilmesidir. Bunu Wukong CRM'de yapın, açık kaynak sürümü temelde CR'yi fark etti < Bu sistemin temel işlevi, sorun takibi için bir görev yönetimi işlevine de sahiptir.Ancak, bunu kullanırsanız, yardımcı olması için yine de başka bir proje yönetimi yazılımına ihtiyacınız vardır.Bu arada, bu sistemin kodunun bakımı zordur. Müşteri ölçeği küçük olduğunda (10.000'den az) uygulanabilir.

2. DNS

DNS çok yönlü bir hizmettir. Başlangıç şirketleri temelde uygun bir bulut satıcısı seçerler. Çin'de iki ana tedarikçi vardır:

  • Aliwan.com: Alibaba 2014 yılında Wanwang'ı satın aldı, alan adı hizmetlerini entegre etti ve sonunda DNS hizmetlerini içeren mevcut Aliwan.com'u kurdu;
  • Tencent DNSPod: Tencent, 2012 yılında DNSPod hisselerinin% 100'ünü 40 milyon karşılığında satın aldı ve temel olarak alan adı çözümlemesi ve bazı koruma işlevleri sağladı;

İşletmeniz Çin'de ise, esas olarak bu ikisidir, sadece birini seçin. Toutiao gibi şirketler, bazı CDN satıcıları veya bölge gibi kendi başlarına oluşturulması gereken bazı özel nedenler olmadıkça DNSPod hizmetlerini de kullanır. Özel kısıtlamalar var. Daha uygun fiyatlı olmak için Alinin en ucuz temel sürümünü kullanın. Daha yüksek bir başarı oranına sahip olmak için pahalı DNSPodu kullanın.

Yurtdışında Amazon'u seçmek daha iyidir. Alinin DNS hizmetinin yalnızca Japonya ve Amerika Birleşik Devletlerinde düğümleri vardır. Güneydoğu Asya, DNSPodu daha yeni yüklemeye başlamıştır. DNSPod ayrıca yalnızca Amerika Birleşik Devletleri ve Japonyada da mevcuttur. Denizaşırı ülkelere giden bazı şirketler gibi bulut hizmetleri de temelde Amazondur.

Çevrimiçi bir ürünse, DNS ücretli sürümü kullanmanızı şiddetle önerir.Ali'nin düzinelerce dolarlık ücretli sürümü temelde talebi karşılayabilir. Eyalete veya bölgeye göre hata ayıklama için bir mantığa ihtiyacınız varsa, paradan ve emekten tasarruf sağlayan yılda yalnızca birkaç yüz yuan olan para eklemeniz gerekir.

Yabancı bir ülkeyseniz Amazon'u tercih edin.Yurtiçi ve yurtdışında iletişim kurmanız ve kendi uygulamanıza sahip olmanız gerekiyorsa, yerli ve yabancı senaryoları aynı anda daha iyi karşılayabilecek hazır DNS servisi olmadığından afet tolerans mantığını veya akıllı zamanlamayı kendiniz uygulamanız önerilir veya Birden çok alan adı kullanın ve farklı alan adları farklı DNS kullanır.

3. LB (yük dengeleme)

LB (Yük Dengeleme) genel bir hizmettir. Genel olarak, bulut satıcılarının LB hizmeti temelde aşağıdaki işlevlere sahiptir:

  • Dört katmanlı protokol talebini destekleyin (TCP, UDP protokolü dahil);
  • Yedi katmanlı protokol isteklerini destekler (HTTP ve HTTPS protokolleri dahil);
  • Merkezi sertifika yönetim sistemi HTTPS protokolünü destekler;
  • saglık kontrolu;

Çevrimiçi hizmet makinelerinizin tümü bulut hizmetlerini kullanıyorsa ve aynı bulut hizmeti sağlayıcısındaysa, Alibaba Cloud'un SLB'si, Tencent Cloud'un CLB'si, Amazon'un ELB'si gibi bulut hizmeti sağlayıcısı tarafından sağlanan LB hizmetini doğrudan kullanabilirsiniz. Bekle. Kendi kendine oluşturulmuş bir bilgisayar odası ise, temelde LVS + Nginx'tir.

4. CDN

CDN zaten çok popüler bir pazar, temelde sadece biraz zor para kazanabiliyor ve bedeli ile satılıyor. Çin'de lider Wangsu, aileleri iç pazarın% 40'ından fazlasını oluşturuyor, onu Tencent ve Ali izliyor. Wangsu'nun yükselişinin büyük bir kısmı canlı yayının yükselişinden kaynaklanıyor.

Yabancı ülkelerde, Amazon ve Akamai birlikte yaklaşık% 50'lik bir paya sahip. Eski uluslararası pazar lideri Akamai, dünya payının yarısından fazlasına sahip. Amazon CDN pazara girdikten sonra payı yaklaşık% 20 düştü. Birçok küçük ve orta ölçekli işletme ikinciye yöneldi. Akamai Aynı zamanda güçsüzdür.

Yurtdışına giden yerel CDN satıcıları çoğunlukla yurtdışına giden yerel şirketlere hizmet vermektedir.Üç büyük CDN hizmet sağlayıcısı arasında Wangsu'da daha fazla düğüm vardır, ancak çok fazla değildir. Ali ve Tencent hala erken aşamadalar ve yalnızca birkaç ülkede düğüm var.

Başlangıç şirketleri söz konusu olduğunda, Tencent Cloud veya Alibaba Cloud CDN'ler için kullanılabilir.İlgili sistemler nispeten eksiksizdir ve kolayca erişilebilir. Wangsu, sistem desteğinde nispeten zayıf ve daha pahalıdır. Dahası, trafik geldiğinde, CDN yalnızca birini değil, birden fazlasını kullanabilir. Farklı CDN'ler ülke genelinde farklı düğüm kapsamına sahiptir ve farklı müşteri bulut satıcıları için, müşteri kümelerinde bazı farklılıklar vardır, tam düğüm kapsamı değil (ancak bazıları Bulut satıcıları, tüm ağın düğümleri olduklarını söylüyorlar.Nod kapsama sorununun yanı sıra, birden fazla CDN de felaket kurtarmada belirli bir ölçüde rol oynuyor.

5. RPC çerçevesi

Wikipedia, RPC'yi şu şekilde tanımlar: Uzaktan Prosedür Çağrısı (RPC) bir bilgisayar iletişim protokolüdür. Bu protokol, bir bilgisayarda çalışan programların, programcının bu etkileşimi programlaması gerekmeden başka bir bilgisayarın alt yordamlarını çağırmasına izin verir.

Layman'ın terimleriyle, eksiksiz bir RPC çağırma süreci, Sunucunun bir işlevi uyguladığı ve istemcinin bu işlevin uygulamasını çağırmak ve dönüş değerini elde etmek için RPC çerçevesi tarafından sağlanan arabirimi kullandığı bir süreçtir.

Endüstrinin RPC çerçevesi kabaca iki büyük okula bölünmüştür; biri diller arası aramalara, diğeri hizmet yönetişimine odaklanır.

Dil arası çağrı RPC çerçeveleri, Thrift, gRPC, Hessian, Hprose vb. İçerir. Bu tür bir RPC çerçevesi, hizmetlerin diller arası çağrılmasına odaklanır ve dilden bağımsız çağrılar için çoğu dili destekleyebilir ve çok dilli çağrı senaryoları için çok uygundur. Ancak, bu tür bir çerçevenin hizmet keşfiyle ilgili bir mekanizması yoktur ve proxy katmanının gerçek kullanımda istek iletme ve yük dengeleme ilkesi denetimi gerçekleştirmesi gerekir.

Bunlar arasında, gRPC, Google tarafından geliştirilmiş yüksek performanslı, genel amaçlı bir açık kaynak RPC çerçevesidir. Esas olarak Google tarafından mobil uygulama geliştirme için tasarlanmıştır ve HTTP / 2 protokol standardına dayanır.ProtoBuf (Protokol Tamponları) serileştirme protokolüne dayalı olarak geliştirilmiştir ve birçok geliştirme dilini destekler. . Kendi içinde dağıtılmadığından, çerçevenin işlevlerini gerçekleştirmek için daha fazla gelişmeye ihtiyaç vardır.

Hprose (Yüksek Performanslı Uzak Nesne Hizmet Motoru), MIT tarafından lisanslanan, yeni, hafif, çapraz platformlu, nesne yönelimli, yüksek performanslı, uzaktan dinamik iletişim ara yazılımıdır.

Hizmet yönetişimi RPC çerçevesi zengin işlevlerle karakterize edilir, yüksek performanslı uzaktan çağrı, hizmet keşfi ve hizmet yönetişimi yetenekleri sağlar, büyük hizmetlerin hizmet ayrıştırması ve hizmet yönetişimi için uygundur ve belirli dil (Java) projeleri için şeffaf olabilir Giriş. Dezavantaj, yüksek derecede dil eşleşmesi ve çapraz dil desteğinin zorluğudur. Çin'deki yaygın RPC çerçeveleri aşağıdaki gibidir:

  • Dubbo: Dubbo, Alibaba tarafından sağlanan açık kaynaklı bir Java yüksek performanslı ve mükemmel hizmet çerçevesidir.Uygulamaların yüksek performanslı RPC aracılığıyla hizmet çıktı ve giriş işlevlerini uygulamasına olanak tanır ve Spring çerçevesi ile sorunsuz bir şekilde entegre edilebilir. O zamanlar Taobao'da Dubbo'nun Taobao'daki benzer bir HSF çerçevesi ile rekabetçi bir ilişkisi vardı, bu da Dubbo ekibinin dağılmasına yol açtı ve son zamanlarda tam zamanlı öğrencilerin katkılarıyla hayata geri döndü.
  • DubboX: DubboX, Dangdang tarafından Dubbo çerçevesine dayalı olarak genişletilen bir RPC çerçevesidir.REST tarzı uzaktan aramaları, Kryo / FST serileştirmeyi destekler ve bazı yeni özellikler ekler. Motan: Motan, Sina Weibo tarafından sağlanan açık kaynaklı bir Java çerçevesidir. 2013'ten başlayarak nispeten geç doğdu ve Mayıs 2016'da açık kaynaklı. Motan, Weibo platformunda yaygın olarak kullanıldı ve her gün yüzlerce hizmet için yaklaşık 100 milyar çağrıyı tamamladı.
  • rpcx: rpcx, Golang net / rpc'ye dayalı, Alibaba Dubbo ve Weibo Motan'a benzer dağıtılmış bir RPC hizmet çerçevesidir. Ancak rpcx temelde tek bir kişi tarafından korunur ve eksiksiz bir topluluk yoktur. Kullanmadan önce dikkatli olmalısınız. Golang RPC'yi seçerken de bunu düşündüm. Sonunda pes ettim ve gRPC'yi seçtim. Kendiniz bir RPC çerçevesi geliştirmek istiyorsanız, Referans için öğrenin.

6. Ad keşfi / hizmet keşfi

Ad keşfi ve hizmet keşfi, biri istemci keşif modu ve diğeri sunucu keşif modu olmak üzere iki moda bölünmüştür.

Çerçevede yaygın olarak kullanılan hizmet keşfi, istemci keşif modudur.

Sözde sunucu keşif modu, istemcinin bir yük dengeleyici aracılığıyla hizmete bir istek göndermesi ve yük dengeleyicinin hizmet kaydını sorgular ve isteği mevcut bir hizmet örneğine yönlendirmesi anlamına gelir. Günümüzde yaygın olarak kullanılan yük dengeleyiciler, genellikle mikro hizmetlerde kullanılan bu tür modellerdir.

Tüm ad keşfi ve hizmet keşfi, çok yüksek oranda erişilebilir bir hizmet siciline dayanır.Sektörde yaygın olarak kullanılan üç hizmet kaydı vardır:

  • etcd, yüksek düzeyde kullanılabilir, dağıtılmış, tutarlı, anahtar-değer depolaması, paylaşılan yapılandırma ve hizmet keşfinde kullanılır. Bunu iki tanınmış proje kullandı: Kubernetes ve Cloud Foundry.
  • Hizmetleri keşfetmek ve yapılandırmak için bir araç olan Consul, istemcilerin hizmetleri kaydetmesi ve keşfetmesi için API'ler sağlar. Consul ayrıca sağlık kontrolleri gerçekleştirerek hizmetlerin kullanılabilirliğini belirleyebilir.
  • Apache ZooKeeper, dağıtılmış uygulamalar için yaygın olarak kullanılan, yüksek performanslı bir koordinasyon hizmetidir. Apache ZooKeeper, başlangıçta Hadoop'un bir alt projesiydi, ancak şu anda üst düzey bir projedir.

Ek olarak, hizmet uygulamasını kendiniz de uygulayabilir veya Redis kullanabilirsiniz, ancak yüksek kullanılabilirliği kendiniz uygulamanız gerekir.

7. İlişkisel veritabanı

İki tür ilişkisel veritabanı vardır: Biri Oracle, MySQL, Maria, DB2, PostgreSQL gibi geleneksel ilişkisel verilerdir ve diğeri en az aşağıdaki beş noktayı karşılaması gereken yeni bir ilişkisel veritabanı olan NewSQL'dir:

  • SQL'i tam olarak destekler ve JOIN / GROUP BY / subqueries gibi karmaşık SQL sorgularını destekler.
  • Geleneksel veri standartlarıyla ACID işlemlerini destekler ve güçlü izolasyon seviyelerini destekler.
  • Esnek olarak ölçeklendirme yeteneğine sahiptir ve genişleme ve daralma iş katmanına tamamen şeffaftır.
  • Gerçek yüksek kullanılabilirlik, farklı yerlerde birden fazla etkinlik ve arıza kurtarma süreci, insan erişimini gerektirmez.Sistem, otomatik olarak felaket toleransı ve güçlü tutarlı veri kurtarma yapabilir.
  • Belirli büyük veri analizi yeteneklerine sahiptir.
  • MySQL, olgun ve kararlı olan, en çok kullanılan geleneksel ilişkisel veritabanıdır. Bazı temel gereksinimler karşılanabilir. Belirli bir veri düzeyinden önce, temel bir bağımsız geleneksel veritabanı işlenebilir. Ve şimdi daha fazla açık kaynak sistemi, kullanıma hazır MySQL'e dayanmaktadır. Kullanıma hazır, master-slave senkronizasyonu ve ön uç önbelleğe alma ile birleştiğinde milyonlarca PV uygulaması işlenebilir. Bununla birlikte, CentOS 7 MySQL'i MariaDB lehine terk etti. MariaDB veritabanı yönetim sistemi, esas olarak açık kaynak topluluğu tarafından sürdürülen ve GPL altında lisanslanan MySQ L'nin bir dalıdır. Bu dalın geliştirilmesinin nedenlerinden biri, Oracle'ın MySQL'i satın almasından sonra, MySQL'i bir kaynak olarak kapatmanın potansiyel bir riskinin olmasıdır.Bu nedenle, topluluk bu riski önlemek için dallanma kullanır.

    Google'ın, Ölçeklendiren ve Anahtar Veren Dağıtılmış Bir SQL Veritabanı: Google'ın Küresel Olarak Dağıtılmış Veri Tabanı: F1'i yayınlamasından sonra, NewSQL sektörde popüler hale geldi. Yani CockroachDB vardı ve sonra Qi Amca'dan TiDB vardı. TiDB, Çin'deki birçok şirket tarafından kullanılıyordu. TiDB, şirketleri başlatırken büyük veri analizinde zaten kullanılıyordu. O zamanki uygulamanın ana nedeni, MySQL'in alt veritabanları ve tablolar kullanmak zorunda kalmasıydı. Mantık geliştirme karmaşıktı ve ölçeklenebilirlik yetersizdi.

    8. NoSQL

    NoSQL, adından da anlaşılacağı gibi, Yalnızca SQL Değildir.Bazıları bunun SQL olmadığını söyler.Kişisel olarak Yalnızca Değil SQL'i tercih eder. İlişkisel veritabanlarının yerini almak için kullanılmaz, ancak ilişkisel veritabanlarına ek olarak mevcuttur.

    4 tür yaygın NoSQL vardır:

    • Anahtar-değer, içerik önbelleğe almaya uygun, karışık iş yükleri ve büyük gereksinimlere sahip eşzamanlı yüksek ölçeklenen veri kümeleri için uygundur. Avantajları basit, hızlı sorgu hızıdır ve dezavantajı yapılandırılmış verilerin olmamasıdır. Yaygın olanlar arasında Redis, Memcache, BerkeleyDB ve Voldemort, vb .;
    • Aynı sütun verilerini bir sütun kümesi türünde depolayan sütun türü Hbase ve Cassandra'nın temsil edildiği dağıtılmış dosya sistemlerinde yaygındır. Cassandra daha çok yazmanın ve daha az okumanın olduğu senaryolarda kullanılır.Yerde 360 veya yaklaşık 1500 makine kümesi vardır. EBay, Instagram, Apple ve Wal-Mart gibi daha büyük ölçekli yabancı şirketler vardır.
    • Belge ve veri depolama çözümleri, çok farklı yapılarla büyük miktarlarda ilgisiz ve karmaşık bilgiyi taşımak için çok uygundur. Performans, kv ve ilişkisel veritabanı arasındadır.MongoDB, CouchDB vb. Lotus notalarından esinlenmiştir.
    • Grafikler, grafik veritabanları, ilişkileri içeren herhangi bir durumu ele almakta iyidir. Sosyal ağlar, öneri sistemleri vb. Bir ilişki grafiği oluşturmaya odaklanarak, sonucu elde etmek için grafiğin tamamını hesaplamanız gerekir. Dağıtılmış bir küme çözümü yapmak kolay değildir. Yaygın olanlar arasında Neo4J, InfoGrid vb. Bulunur.

    Yukarıdaki dört türe ek olarak, nesne veritabanları, XML veritabanları gibi bazı özel veritabanları da vardır ve bunlar, belirli depolama türleri için optimize edilmiş veritabanlarıdır.

    Gerçek uygulama senaryolarında, ilişkisel bir veritabanının ne zaman kullanılacağı, NoSQL'in ne zaman kullanılacağı ve hangi tür veritabanı kullanılacağı, mimariyi seçtiğimizde bu çok önemli bir husustur ve hatta tüm mimariyi etkileyecektir.

    9. Mesaj ara yazılımı

    Mesaj ara yazılımı, arka plan sisteminde vazgeçilmez bir bileşendir. Genel olarak, aşağıdaki senaryolarda mesaj ara yazılımını kullanırız:

    • Eşzamansız işleme: Eşzamansız işlem, ileti ara yazılımını kullanmanın ana nedenlerinden biridir. İşteki en yaygın eşzamansız senaryolar, başarılı bir kayıttan sonra başarılı bir kayıt e-postası göndermesi ve önbelleğin süresi dolduğunda eski verileri döndürmesi ve ardından önbelleği eşzamansız olarak güncellemesi ve eşzamansız olarak yazması gereken kullanıcılardır. Günlükler, vb .; eşzamansız işlem yoluyla, ana işlemin bekleme yanıt süresini azaltabilir, ana olmayan işlemlerin veya önemli olmayan işletmelerin ileti ara yazılımı aracılığıyla merkezi eşzamansız işlem yapmasına olanak tanır.
    • Sistem ayrıştırması: Örneğin e-ticaret sisteminde, kullanıcı siparişi başarıyla ödediğinde ve tamamladığında, ödeme sonucunun ERP sistemine, fatura sistemine, WMS'ye, öneri sistemine, arama sistemine, risk kontrol sistemine vb. İş işleme için bildirilmesi gerekir; bu iş süreçleri Gerçek zamanlı işlemeye, güçlü bir tutarlılığa, yalnızca nihai tutarlılığa gerek yoktur, böylece sistem mesaj ara yazılımları aracılığıyla ayrıştırılabilir. Bu tür bir sistem ayrıştırması sayesinde, gelecekte belirsiz sistem gereksinimleri ile de başa çıkabilir.
    • Tepe kesme ve vadi doldurma: Sistem yoğun bir trafikle karşılaştığında, izleme çizelgesinde dağ benzeri bir trafik grafiği görürsünüz.Yüksek akışlı istek, mesaj ara yazılımı kullanılarak sıraya alınır ve talebi sıraya koymak için tüketici programı kullanılır. Tepeleri ortadan kaldırma ve vadileri doldurma etkisini elde etmek için işleme talebi yavaşça sindirilir. En tipik senaryo spike sistemidir. E-ticaret spike sistemindeki sipariş hizmetleri genellikle sistemin darboğazıdır, çünkü sipariş, envanter gibi veritabanı işlemlerini gerektirir ve güçlü tutarlılığın sağlanması gerekir. Şu anda, indirmek için mesaj ara yazılımı kullanılır Tek kuyruklama ve akış kontrolü, sipariş hizmetinin sıradaki siparişleri yavaşça işlemesine ve tepe kesme ve vadi doldurma etkisini elde etmek için sipariş hizmetini korumasına olanak tanır.

    Sektör mesaj ara yazılımı çok yaygın bir şeydir. Model seçerken, bazı insanlar açık kaynak kodlu olanları kullanır, bazıları kendi tekerleklerini yapar ve hatta bazıları doğrudan sıralar olarak MySQL veya Redis kullanır. Önemli olan, ihtiyaçlarınızı karşılayıp karşılamadığını görmektir. Açık kaynaklı projeler için, seçim yapılırken aşağıdaki tablo referans olarak kullanılabilir:

    Yukarıdaki şeklin enlemi şöyledir: ad, olgunluk, bağlı topluluk / şirket, belge, yetkilendirme yöntemi, geliştirme dili, desteklenen protokol, istemci destekli dil, performans, kalıcılık, işlem, küme, yük dengeleme, yönetim arayüzü, dağıtım Yöntem, değerlendirme.

    10. Kod yönetimi

    Kod, İnternet girişimlerinin can damarlarından biridir.Kod yönetimi çok önemlidir. Ortak hususlar arasında iki tane vardır:

    • Güvenlik ve yetki yönetimi, kodu intranete koyun ve ilgili şirketin yaşam hattının temel kodu için makinenin sıkı kod kontrolü ve fiziksel izolasyonunu yapın;
    • Kod yönetimi aracı, Git kod yönetimi için en iyi seçimdir, bunu hak ediyorsunuz. GitLab, günümüzün en popüler açık kaynak kodlu Git barındırma sunucusudur.Kimse yoktur.Kurumsal bir sürüm olmasına rağmen, topluluk sürümü temelde ihtiyaçlarımızın çoğunu karşılayabilir.Gerrit'i Kod incelemesi için birleştirmek, temelde mükemmeldir. Tabii ki GitLab'ın kod karşılaştırması da vardır, ancak Gerrit kadar sezgisel değildir. Gerrit, GitLab'den daha iyi bir kod inceleme arayüzü ve ana hat yönetimi deneyimi sağlar ve kod kalitesi için yüksek gereksinimleri olan bir kültürde kullanım için daha uygundur.

    11. Sürekli entegrasyon

    CI (sürekli entegrasyon) olarak kısaltılan sürekli entegrasyon, bir yazılım geliştirme uygulamasıdır, yani ekip geliştirme üyeleri genellikle işlerini entegre eder ve her gün birden fazla entegrasyon meydana gelebilir. Her bir entegrasyon, entegrasyon hatalarının olabildiğince erken bulunabilmesi için otomatik derlemeler (derleme, yayınlama ve otomatik testler dahil) aracılığıyla doğrulanır. Sürekli entegrasyon, geliştirme süreci için kod dalı yönetimi / karşılaştırması, derleme, inceleme ve yayın çıktıları gibi temel görevleri sağlar ve test kapsamı sürümlerinin derlenmesi ve oluşturulması için birleşik destek sağlar.

    Endüstrinin ücretsiz sürekli entegrasyon araçlarında aşağıdaki seçeneklere sahibiz:

    • Jenkins: Güçlü bir eklenti mekanizmasıyla Java'da yazılmıştır ve MIT protokolü altında açık kaynaklıdır (ücretsiz ve yüksek oranda özelleştirilebilir, dağıtılabilir ve birden fazla makinede yük testi yapılabilir). Jenkins her şeye gücü yeten biri olarak kabul edilebilir Temelde Jenkins'in yapamayacağı hiçbir şey yoktur.Jenkins küçük takımlardan büyük takımlara kadar her şeyi halledebilir. Ancak, onu geniş ölçekte kullanmak istiyorsanız, öğrenmek ve sürdürmek için hala insan gücüne ihtiyacınız var.
    • TeamCity: TeamCity, Jenkins'ten daha kullanıcı dostudur ve aynı zamanda oldukça özelleştirilebilir bir platformdur. Ancak onu kullanan daha fazla kişi varsa, TeamCity ücret alacaktır.
    • Strider: Strider, konsept olarak Travis ve Jenkins'e benzer şekilde, Node.js, MongoDB, BSD lisansı kullanarak depolama kullanılarak uygulanan açık kaynaklı bir sürekli entegrasyon ve dağıtım platformudur.
    • GitLab CI: GitLab 8.0'dan beri GitLab CI, GitLab'a entegre edilmiştir. Projeye sadece bir .gitlab-ci.yml dosyası eklememiz ve ardından sürekli entegrasyon gerçekleştirmek için bir Runner eklememiz gerekiyor. GitLab ve Docker, birbirleriyle çok iyi işbirliği yapma becerisine sahiptir. Ücretsiz sürüm ile ücretli sürüm arasındaki fark burada bulunabilir: https://about.gitlab.com/products/feature-comparison/.
    • Travis: Travis ve GitHub güçlü bir şekilde ilişkilidir; SaaS kapalı kaynak koduyla kullanılırken güvenlik sorunlarının dikkate alınması gerekir; özelleştirilemez; açık kaynaklı projeler ücretsizdir ve diğer ücretler uygulanır.
    • Git: Git, ThoughtWorks'ün en son Cruise Control'ün enkarnasyonudur. ThoughtWorks tarafından sağlanan ticari destek dışında Go ücretsizdir. Windows, Mac ve çeşitli Linux dağıtımları için uygundur.

    12. Günlük sistemi

    Günlük sistemi genellikle günlüğe kaydetme, toplama, aktarma, toplama, depolama, analiz, sunum, arama ve dağıtımı içerir. Boyama, tam zincir izleme veya izleme gibi bazı özel şeylerin elde etmek için log sistemine güvenmesi gerekebilir. Log sisteminin yapısı sadece araçların yapımı değil, aynı zamanda teknik özelliklerin ve bileşenlerin yapımıdır.Tam bağlantı izleme gibi çerçeve ve bileşen seviyesinde bazı temel günlükleri eklemek en iyisidir.

    Geleneksel log sistemi için ELK, ihtiyaçların çoğunu karşılayabilir, ELK aşağıdaki bileşenleri içerir:

    • ElasticSearch, açık kaynaklı, dağıtılmış bir arama motorudur. Özellikleri şunlardır: dağıtılmış, sıfır yapılandırma, otomatik keşif, otomatik dizin parçalama, dizin kopyalama mekanizması, RESTful stil arabirimi, çoklu veri kaynakları, otomatik arama yükü vb.
    • Logstash, günlüklerinizi toplayıp analiz edebilen ve daha sonra kullanmak üzere saklayabilen tamamen açık kaynaklı bir araçtır.
    • Kibana, açık kaynak kodlu ve ücretsiz bir araçtır. Logstash ve ElasticSearch'e, önemli veri günlüklerini özetlemeye, analiz etmeye ve aramaya yardımcı olabilecek günlük analizi için kullanıcı dostu bir web arayüzü sağlayabilir.
    • Filebeat, Logstash-Forwarder'ı yeni nesil günlük toplayıcı olarak tamamen değiştirdi.Aynı zamanda, hafifliği ve güvenlik özellikleri göz önüne alındığında, giderek daha fazla insan kullanmaya başlıyor.

    Ücretsiz ELK herhangi bir güvenlik mekanizmasına sahip olmadığı için, Nginx, kullanıcıların Kibana sunucusuna doğrudan erişmesini önlemek için ters proxy olarak kullanılır. Basit kullanıcı kimlik doğrulamasını uygulamak için Nginx'in yapılandırılmasıyla birleştiğinde, güvenlik belirli bir dereceye kadar geliştirildi. Ek olarak, Nginx'in kendisi, sistem erişim performansını artırabilen bir yük dengeleme işlevine sahiptir. ELK mimarisi Şekil 4'te gösterilmektedir:

    Gerçek zamanlı bilgi işlem ihtiyaçları için Flume + Kafka + Storm + MySQL çözümünü kullanabilirsiniz.Genel mimari Şekil 5'te gösterilmektedir:

    onların arasında:

    • Flume, yoğun günlük toplama, toplama ve iletimi için dağıtılmış, güvenilir ve yüksek düzeyde kullanılabilir bir günlük toplama sistemidir.Veri toplamak için günlük sistemindeki çeşitli veri göndericilerini özelleştirmeyi destekler; aynı zamanda, Flume basit veri işleme sağlar , Ve çeşitli veri alıcılarının yeteneklerine yazın (özelleştirilebilir).
    • Kafka, Apache Software Foundation tarafından geliştirilen, Scala ve Java ile yazılmış açık kaynaklı bir akış işleme platformudur. Temelde, yatay ölçeklenebilirlik ve yüksek verim ile yaygın olarak kullanılan "dağıtılmış bir işlem günlüğü mimarisine dayalı büyük ölçekli bir yayınlama / abone olma mesajı kuyruğu" dur.

    Kafka yüksek verim ve yüksek yük peşinde, Flume veri çeşitliliği peşinde. İkisinin kombinasyonu mükemmel.

    13. İzleme sistemi

    İzleme sistemi yalnızca arka planla ilgili olanları içerir.Burada başlıca iki parça vardır: Birincisi, makine yükü, IO, ağ trafiği, CPU, bellek ve diğer işletim sistemi göstergelerinin izlenmesi gibi işletim sistemi katmanının izlenmesidir. Diğeri, hizmet kullanılabilirliği, başarı oranı, başarısızlık oranı, kapasite, QPS vb. Gibi hizmet kalitesi ve iş kalitesinin izlenmesidir. Ortak işletmenin izleme sistemi, önce işletim sistemi düzeyinde izleme içerir (bu bölüm daha olgunlaşmıştır) ve ardından Zabbix, Xiaomi'nin Open-Falcon'u ve Prometheus gibi her ikisini de destekleyen biri gibi diğer izlemeyi genişletir. İş izleme gereksinimleri nispeten yüksekse, girişimcilik seçiminde Prometheus'a öncelik verilmesi önerilir. İşte Şekil 6'da gösterildiği gibi ilginç bir dağılım.

    Şekil 6, İzleme sistemi dağıtımı

    Zabbix daha çok Asya'da, Prometheus ise daha çok Amerika, Avrupa ve Avustralya'da, yani Prometheus daha çok İngilizce konuşulan ülkelerde (gelişmiş ülkeler?)

    Prometheus, SoundCloud tarafından geliştirilen açık kaynaklı bir izleme alarm sistemi ve zaman serisi veritabanıdır (TSDB). Prometheus, Go dilinde geliştirilmiştir ve Google BorgMon izleme sisteminin açık kaynaklı bir sürümüdür. Diğer izleme sistemleri tarafından kullanılan push veri yöntemiyle karşılaştırıldığında, Prometheus çekme yöntemini kullanır ve mimarisi Şekil 7'de gösterilmiştir:

    Yukarıdaki şekilde gösterildiği gibi, Prometheus'un ana bileşenleri aşağıdaki gibidir:

    • Prometheus Sunucusu esas olarak veri toplama ve depolamadan sorumludur ve PromQL sorgu dili için destek sağlar. Sunucu, tarama hedefini yapılandırma dosyaları, metin dosyaları, ZooKeeper, Consul, DNS SRV Lookup vb. Aracılığıyla belirtir. Bu hedeflere göre, sunucu periyodik olarak ölçüm verilerini alır ve her yakalama hedefinin, düzenli olarak yakalanması için bir http hizmet arayüzü ortaya çıkarması gerekir.
    • İstemci SDK: Resmi istemci sınıfı kitaplıkları Go, Java, Scala, Python, Ruby ve Nodejs, PHP, Erlang vb. Destekleyen diğer birçok üçüncü taraf tarafından geliştirilmiş sınıf kitaplığıdır.
    • Push Gateway, geçici işler için göstergeleri aktif olarak iten bir ara ağ geçidini destekler.
    • İhracatçı İhracatçı, Prometheus'un veri toplama bileşenlerinin bir sınıfı için genel bir terimdir. Hedeften veri toplamak ve bunu Prometheus tarafından desteklenen bir formata dönüştürmekle sorumludur. Geleneksel veri toplama bileşeninin aksine, merkezi sunucuya veri göndermez, ancak merkezi sunucunun onu kapmak için inisiyatif almasını bekler. Prometheus, çeşitli hizmetlerin çalışma durumunu toplamak için çeşitli İhracatçı türleri sağlar. Şu anda desteklenen veritabanları, donanım, mesajlaşma ara yazılımı, depolama sistemleri, HTTP sunucuları, JMX vb.
    • Alertmanager: Prometheus sorgu ifadelerini destekleyen ve çok esnek bir uyarı yolu sağlayan ayrı bir hizmettir.
    • Prometheus HTTP API sorgu yöntemi, istenen çıktıyı özelleştirin.
    • Grafana, Graphite, InfluxDB, OpenTSDB, Prometheus, Elasticsearch, CloudWatch ve diğer veri kaynaklarını destekleyen açık kaynaklı bir analiz ve izleme platformudur. Kullanıcı arayüzü çok güzel ve oldukça özelleştirilmiştir.

    Başlangıç şirketleri, birleşik bir hizmet çerçevesi (gRPC gibi) ile birlikte Prometheus + Grafana çözümünü seçer ve çoğu küçük ve orta ölçekli ekibin izleme ihtiyaçlarını karşılayabilir.

    14. Sistemi yapılandırın

    Program işlevlerinin artan karmaşıklığıyla, programların yapılandırması artmaktadır: çeşitli işlev anahtarları, sürüm düşürme anahtarları, gri anahtarlar, parametre yapılandırması, sunucu adresi, veritabanı yapılandırması vb., Ayrıca arka plan programının yapılandırması Gereksinimler gittikçe artıyor: yapılandırma değişiklikleri gerçek zamanlı olarak yürürlüğe giriyor, gri tonlamalı sürüm, ortama göre yönetim yapılandırması, kullanıcı, küme yönetimi yapılandırması, tam izinler, denetim mekanizması vb. Böyle büyük bir ortamda, geleneksel yapılandırma dosyası, Veritabanları ve diğer yöntemler, geliştiricilerin konfigürasyon yönetimi ihtiyaçlarını giderek daha fazla karşılayamaz hale gelmiştir.Sektörde aşağıdaki iki çözüm bulunmaktadır:

    • Zk ve etcd, destek arabirimi ve api'ye dayalı olarak, sürüm geçmişini kaydetmek, planlamak, gözden geçirme sürecinden geçmek ve son olarak bunu zk veya etcd'ye göndermek için bir veritabanı kullanın (hizmet kaydının kendisi de zk veya etcd kullanır, seçim Sadece tek parça). Müşteriler doğrudan zk veya etcd ile ilgilenir. Gri tonlama sürümüne gelince, her şirket farklıdır.Bir uygulama, aynı anda gri tonlamaya ihtiyaç duyan IP'lerin bir listesini yayınlamaktır.İstemci yapılandırma düğümü değişikliğini izlediğinde, listeye ait olup olmadığını karşılaştırır. Durum bilgisi olmayan bir dil ve zk / etcd tarafından desteklenmeyen diğer diller PHP, değişiklikleri izlemek için istemci makinesinde bir Aracı kurmalı ve ardından yapılandırma dosyasına veya 360'ın Qconf'u gibi paylaşılan belleğe yazmalıdır.
    • Operasyon ve bakım otomasyonuna, gözden geçirme sürecine, konfigürasyon veri yönetimine dayalı konfigürasyon dosyası itme planı 1'e benzer. Konfigürasyon dosyası, yayınlandığında oluşturulur ve Puppet ve Ansible gibi operasyon ve bakım otomasyon araçlarına dayalı olarak her istemciye gönderilirken, uygulama düzenli olarak yeniden okunur Bu harici yapılandırma dosyasını alın ve Grayscale, yapılandırmayı yayınlarken belirtilen IP listesini yayınlar.

    Başlangıç şirketleri erken aşamada bu tür bir karmaşıklığa ihtiyaç duymazlar. Doğrudan zk'ye gidebilir, zk içeriğini yönetmek için bir arayüz edinebilir, herkesin işlem günlüklerini kaydedebilir ve doğrudan zk'ye bağlanarak programlayabilir veya Qconf ve zk'ye göre optimize edilmiş diğer çözümleri kullanabilir.

    15. Sistemi serbest bırakın / sistemi dağıtın

    Yazılım üretimi açısından, koddan son hizmete kadar tipik akış Şekil 8'de gösterilmektedir:

    Yukarıdaki şekilden de görülebileceği gibi, geliştiricinin kodu yazmasından son kullanıcıya hizmet vermesine kadar geçen uzun bir süreçtir.Tüm süreç üç aşamaya ayrılabilir:

    • Koddan (Kod) bitmiş ürün kitaplığına (Artifact) kadar, bu aşama esas olarak geliştiricinin kodunu sürekli olarak oluşturmak ve yapı tarafından üretilen ürünleri merkezi olarak yönetmek içindir ve dağıtım sistemi için girdi içeriğini hazırlama aşamasıdır.
    • Üründen çalıştırılabilir hizmete Bu aşama, esas olarak ürünlerin, dağıtım sisteminin en temel içeriği olan belirtilen ortama dağıtımını tamamlar.
    • Geliştirme ortamından nihai üretim ortamına kadar, bu aşama esas olarak bir değişikliğin farklı bir ortama geçişini tamamlar; bu, sistemin çevrimiçi olarak nihai hizmete geçmesini sağlamanın temel becerisidir.

    Sürüm sistemi, ürün yönetimi, sürüm süreci, izin kontrolü, çevrimiçi ortam sürüm değişiklikleri, gri sürüm, çevrimiçi hizmet geri alma vb. Entegre eder. Geliştiricilerin nihayet iş kristalizasyonunu sunmaları için önemli bir kanaldır. Açık kaynaklı projelerde tam anlamıyla tatmin olmuş projeler yoktur. Yalnızca bir Web projesi ise, Walle ve Piplin kullanılabilir ancak işlevler tatmin edici değildir. İşin başında Jenkins + Gitlab + Walle'ı entegre edebilirsiniz (iyileştirmek için iki gün düşünebilirsiniz), yukarıdakiler Plan temelde ürün yönetimi, sürüm süreci, yetki kontrolü, çevrimiçi ortam sürüm değişiklikleri, gri sürüm (bunu kendiniz uygulamanız gerekir) ve çevrimiçi hizmet geri alma gibi işlevleri içerir.

    16. Tramplen

    Sıçrama tahtası makinesi, rol yönetimi ve yetkilendirme onayı, bilgi kaynağı erişim kontrolü, işlem kayıtları ve denetimler, sistem değişiklikleri ve bakım kontrolü gereksinimlerini karşılamanın ve BT iç kontrolünü sürekli olarak iyileştirmek için yönetim standartlarıyla işbirliği yapmak için bazı istatistiksel raporlar oluşturma ihtiyacıyla karşı karşıyadır. Uyumluluk, operasyon ve bakım personelinin çalışma davranışını kontrol edebilir ve denetleyebilir ve yanlış kullanım ve yasadışı operasyondan kaynaklanan operasyon kazalarının nedenini ve sorumlu kişiyi hızlı bir şekilde bulabilir. İşlevsel modülleri genellikle şunları içerir: hesap yönetimi, kimlik doğrulama yönetimi, yetkilendirme yönetimi, denetim yönetimi vb.

    Açık kaynaklı projede, Jumpserver; yetkilendirme, kullanıcı yönetimi, sunucu temel bilgi kaydı vb. Gibi sıçrama tahtasının ortak gereksinimlerini gerçekleştirebilir ve ayrıca komut dosyalarını toplu olarak çalıştırabilir; bunların arasında, video oynatma, komut arama ve gerçek zamanlı izleme özellikleri de çalıştırma ve bakıma yardımcı olabilir. Personel, operasyon izlerini bulmak ve sunucunun diğer personel tarafından operasyon kontrolünü yönetmek için uygun olan operasyon geçmişini izleyebilir.

    17. Makine yönetimi

    Makine yönetimi için araç seçimi, aşağıdaki üç yönü içerebilir:

  • Basit mi Her makinede Agent (istemci) dağıtmanız gerekiyor mu?
  • Dil seçimi (Puppet / Chef vs Ansible / SaltStack) açık kaynak teknolojisi, resmi web sitesine bakmamak yetkin olmak için yeterli değildir, kaynak kodunu anlamamak yetkin olmak için yeterli değildir; Puppet ve Chef Python geliştirmeye dayalı Ruby geliştirmesine, Ansible, SaltStack'e dayanmaktadır.
  • Hız seçimi (Ansible vs SaltStack) Ansible, verileri SSH protokolüne göre aktarır ve SaltStack, veri aktarmak için mesaj kuyruğu zeroMQ kullanır; büyük ölçekli eşzamanlılık yetenekleri için Ansible'ın performansı onlarca -200 birim için kabul edilebilir. Binlerce birimi çalıştırmak için tuz kullanmak daha iyidir.
  • Genel olarak, yeni başlayanlar problemlerin çoğunu çözmek için Ansible'ı seçerler.Bu basittir ve ek istemciler kurması gerekmez.Komut satırından çalıştırılabilir ve yapılandırma dosyalarını kullanması gerekmez. Daha karmaşık görevlere gelince, Ansible yapılandırması YAML sözdizimi aracılığıyla Playbook adlı bir yapılandırma dosyasında ele alınır. Başucu kitabı, işlevselliğini genişletmek için şablonlar da kullanabilir.

    Girişimlerin seçimi

    1. Doğru dili seçin

    • Ekibin neye aşina / kontrol edilebilir olduğunu seçin Başlangıç şirketinin daha az insanı ve çok fazla fazlalık olmadan daha fazla görevi vardır.Ar-Ge ekibinin dili yeni dile aşinadır, hızlı bir şekilde başlayabilir, hızlı bir şekilde hayattan çıkabilir ve sorunlar ortaya çıktığında sorunları hızla çözebilir. İyi seçim.
    • Daha modern bir tane seçin. Modern burada, dilin kendisinin daha önce özel işlem gerektiren bellek yönetimi, diziler vb. Gibi bazı özellikleri tamamladığı anlamına gelir.
    • Çok sayıda veya oldukça aktif topluluklar içeren açık kaynak tekerlekleri seçin Bu ilke, geliştirme sürecine daha az yatırım yapılmasını, istikrarlı ve güvenilir tekerleklerin kullanılabilmesini ve sorunlarla karşılaştığınızda İnternette hızlı bir şekilde yanıt arayabilmenizi sağlamaktır.
    • İşe alma için uygun bir dil seçmek, girişimci ekibin işe alma maliyetini düşürmesini ve doğru kişileri hızla işe almasını sağlayacaktır.
    • İlginç bir şey seçmek, yukarıdaki nokta ile ilgilidir, bu ilginç ve insanları geride tutmak için yararlıdır.

    2. Doğru bileşenleri ve bulut hizmeti sağlayıcılarını seçin

    • Güvenilir bir bulut hizmeti sağlayıcısı seçin;
    • Bulut servis sağlayıcısının bileşenlerini seçin;
    • En yeni olanlar yerine olgun açık kaynaklı bileşenleri seçin;
    • Birinci sınıf İnternet şirketleri tarafından piyasaya sürülen, açık kaynak olan ve toplulukta iyi bir üne sahip ürünleri kullanmayı seçin;
    • Açık kaynak topluluk etkinliği;

    Güvenilir bir bulut hizmeti sağlayıcısı seçmek aslında yanlış bir önermedir, çünkü hiçbir hizmet sağlayıcı güvenilir değildir ve vaat ettikleri kullanılabilirlik sorunları temelde size olacaktır. Burada hala kendimiz gibi bazı işler yapmamız gerekiyor, örneğin daha fazlası CDN kullanmak gibi servis sağlayıcı yedeklemesi için, yalnızca birini, en az ikisini seçmemelisiniz, biri felaket kurtarma, arka uca geçme yeteneğini koruyor ve diğeri çok noktalı kapsama alanıdır.Farklı servis sağlayıcıların CDN düğümlerinde farklı kaynakları vardır. aynısı.

    Bir bulut servis sağlayıcısı seçtikten sonra, aralarından seçim yapabileceğiniz çok sayıda ürün olacak. Daha fazla depolama ve kuyruk için hazır ürünler olacak. Şu anda, karışmış durumdasınız. Faydalı mı? Veya bulut sunucusunda mı oluşturacaksınız?

    3

    • /

    4

    ELK

    5

    Go

    200 500

    Nginx'in tüm sihirli işlevlerine sahip misiniz?
    önceki
    RocketMQ işlem mekanizmasının uygulama süreci, mesaj göndermede neden sıfır kayıp elde edebiliyor?
    Sonraki
    SpringBoot projesi: RedisTemplate hafif mesaj kuyruğu uygular
    Birden fazla deneyin paralel yinelemesini nasıl elde edebilirsiniz, Alimama'nın A / B testi uygulaması hakkında konuşun
    On milyarlarca trafik taşıyan yüksek performanslı bir mimari nasıl tasarlanır?
    Ant Financial'ın 100 milyon düzeyinde eşzamanlılık altında mobil uçtan uca ağ erişim mimarisinin analizi
    Zookeeper tarafından dağıtılmış kilit ve Zookeeper'a dayalı liderlik seçimi hakkında derinlemesine anlayış
    Kandırılmaktan bunalıma giren sarhoş bir adam yüz dolarlık banknot dağıtır ve intihar etmek ister.
    Tayland'da okumak için sahip olmanız gereken yetenekleri biliyor musunuz?
    Lisansüstü eğitim için Tayland'a gitmek ister misiniz, bunların hepsini biliyor musunuz?
    iyi haberler! Tayland'da hastaneden taburcu edilen iki önemli hasta: Tayland, bulaşıcı hastalıkları önleme ve kontrol etme kabiliyetiyle dünyada altıncı sırada
    Bahşiş verme bilgisi ile ilgili olarak, Tayland seyahati için ipucu açmanın doğru yolu
    Tmall 618 Tayland Reklamı: Tanrı "Sıcak" dizisini tersine çeviriyor
    Tayland'da "Tayland'ı Görüntüleyin" Ulaşımı
    To Top