GTS burada! Ali mikro hizmet mimarisi altında dağıtılmış işlem çözümü

Alimei'nin tanıtımı: Dağıtık işlemler, mikro hizmetlerin uygulanmasının önündeki en büyük engel haline geldi ve aynı zamanda çok zorlu bir teknik sorundur. Bu amaçla, bugün Alibaba kıdemli teknik uzmanı Yu Gao'yu sizinle mikro hizmet mimarisi altında dağıtılmış işlemler için çeşitli çözümleri tartışmaya ve Alibaba-GTS tarafından önerilen dağıtılmış işlem çözümünü yorumlamaya odaklanmaya davet ediyoruz. (Küresel İşlem Hizmeti).

1 Mikro hizmetlerin geliştirilmesi

Mikro hizmetler, karmaşık monolitik uygulamaların basit işlevlerle ve gevşek bir şekilde bağlanmış birkaç hizmete bölünmesini savunur; bu, geliştirme zorluğunu azaltabilir, ölçeklenebilirliği artırabilir ve çevik geliştirmeyi kolaylaştırabilir. Şu anda daha fazla geliştirici tarafından saygı duyulan birçok İnternet endüstrisi devi ve açık kaynak topluluğu, mikro hizmetleri tartışmaya ve uygulamaya başladı. Hailo'nun 160 farklı servisi ve NetFlix'in yaklaşık 600 servisi var. Yurtiçinde, Alibaba, Tencent, 360, JD.com ve 58.com gibi birçok İnternet şirketi mikro hizmetler uygulamıştır. Mikro hizmetler için birçok geliştirme çerçevesi de vardır. En ünlüleri Dubbo, SpringCloud, thrift, grpc vb.

2 Mikro hizmet inişiyle ilgili sorunlar

Mikro hizmetler şu anda tüm hızıyla devam etse de, uygulamaları hala keşif aşamasındadır. Birçok küçük ve orta ölçekli İnternet şirketi için, deneyim ve teknik güç gibi sorunlar nedeniyle mikro hizmetleri uygulamak zordur. Ünlü mimar Chris Richardson'ın dediği gibi, şu anda var olan temel zorluklar aşağıdaki gibidir:

1) Tek bir uygulama dağıtılmış bir sisteme bölündükten sonra, süreçler arasındaki iletişim mekanizması ve hata işleme önlemleri daha karmaşık hale gelir.

2) Sistem mikro hizmet verildikten sonra, görünüşte basit bir işlevin birden fazla hizmeti çağırması ve birden çok veritabanını dahili olarak çalıştırması gerekebilir ve hizmet çağrılarının dağıtılmış işlem sorunu çok belirgin hale gelir.

3) Çok sayıda mikro hizmet vardır ve bunların test edilmesi, dağıtılması ve izlenmesi daha zor hale gelmiştir.

RPC çerçevesi olgunlaştıkça, ilk sorun yavaş yavaş çözüldü. Örneğin, dubbo birden fazla iletişim protokolünü destekleyebilir ve springcloud dinlendirici çağrıları çok iyi destekleyebilir. Üçüncü soru ile ilgili olarak, docker ve devops teknolojisinin geliştirilmesi ve genel bulut paas platformu için otomatikleştirilmiş operasyon ve bakım araçlarının tanıtılmasıyla birlikte, mikro hizmetlerin test edilmesi, dağıtılması, çalıştırılması ve bakımı daha kolay ve daha kolay hale gelecektir.

İkinci soruna gelince, mikro hizmetlerin neden olduğu işlem sorununu çözmek için evrensel bir çözüm yoktur. Dağıtık işlemler, mikro hizmetlerin uygulanmasının önündeki en büyük engel haline geldi ve aynı zamanda en zorlu teknik sorundur. Bu amaçla, bu makale sizlerle mikro hizmet mimarisi altında dağıtılmış işlemler için çeşitli çözümleri tartışacak ve Alibaba-GTS tarafından önerilen dağıtılmış işlem çözümünü yorumlamaya odaklanacaktır. Programda bahsedilen GTS, mikro hizmet sorunlarını çözen yeni nesil bir dağıtılmış işlem İnternet ara yazılımıdır.

3 Geleneksel dağıtılmış işlem çözümleri

3.1 XA protokolüne dayalı iki aşamalı gönderim şeması

İşlem ara yazılımı ve veritabanı, iki aşamalı kesinleştirme kullanarak küresel bir işlemi tamamlamak için XA arayüz belirtimini kullanır.XA belirtiminin temeli, iki aşamalı tamamlama protokolüdür. İlk aşama oylama aşamasıdır, tüm katılımcılar işlemin başarısı hakkında koordinatöre geri bildirim gönderir; ikinci aşama yürütme aşamasıdır, koordinatör tüm katılımcıların geri bildirimlerine göre tüm katılımcıları bilgilendirir, Tüm şubelerde taahhütte bulunun veya geri alın.

İki aşamalı gönderim şeması yaygın olarak kullanılmaktadır ve neredeyse tüm ticari OLTP veritabanları XA protokolünü destekler. Ancak, iki aşamalı kesinleştirme şemasının kaynakları kilitlemesi uzun zaman alır, bu da performans üzerinde büyük bir etkiye sahiptir ve temelde mikro hizmet işlem sorunlarını çözmek için uygun değildir.

3.2 TCC şeması

TCC programları e-ticaret ve finans alanlarında yaygın olarak kullanılmaktadır. TTK planı aslında iki aşamalı olarak sunulan bir iyileştirmedir. Tüm iş mantığının her dalını açıkça üç işleme ayırır: Dene, Onayla ve İptal. Try bölümü işin hazırlanmasını tamamlar, onay bölümü işin gönderimini tamamlar ve iptal bölümü işlemin geri alınmasını tamamlar. Temel ilke aşağıdaki şekilde gösterilmiştir.

İşlem başladığında, iş uygulaması başlangıç işlemini işlem koordinatörüne kaydedecektir. Bundan sonra, iş uygulaması, bir hazırlık aşamasını tamamlamak için tüm hizmetlerin deneme arayüzünü arayacaktır. Bundan sonra, işlem koordinatörü deneme arayüzünün geri dönüşüne göre onaylama arayüzünü veya iptal arayüzünü çağırmaya karar verecektir. Arayüz araması başarısız olursa, yeniden deneme yapılacaktır.

TCC çözümü, uygulamaların veritabanı işlemlerinin ayrıntı düzeyini kendi kendilerine tanımlamasına olanak vererek kilit çakışmalarını azaltmayı ve verimi artırmayı mümkün kılar. Tabii ki, TCC programının da aşağıdaki iki hususta yoğunlaşan eksiklikleri vardır:

  • Uygulama çok invaziv. İş mantığının her şubesinin deneme, onaylama ve iptal etme işlemlerini gerçekleştirmesi gerekir.Uygulama son derece müdahaleci ve dönüşüm maliyeti yüksektir.

  • Başarmak zordur. Ağ durumu ve sistem arızası gibi farklı arıza nedenlerine göre farklı geri alma stratejilerinin uygulanması gerekir. Tutarlılık gereksinimlerini karşılamak için, onaylama ve iptal etme arayüzleri idempotent olmalıdır.

Yukarıdaki nedenlerden dolayı, çoğu TCC çözümü, güçlü Ar-Ge yetenekleri ve acil ihtiyaçları olan büyük şirketler tarafından benimsenmektedir. Mikro hizmetler, hizmetlerin hafif ve kolay dağıtımını savunurken, TCC çözümündeki birçok işlemin işleme mantığının, karmaşık ve büyük miktarda geliştirme içeren kendi kodlamasıyla uygulanması gerekir.

3.3 Mesaja dayalı nihai tutarlılık şeması

Mesaj tutarlılık şeması, mesaj ara yazılımı aracılığıyla yukarı ve aşağı uygulama veri işlemlerinin tutarlılığını sağlamaktır. Temel fikir, hem yerel işlemlerin hem de mesaj göndermenin başarılı olmasını veya her ikisinin de başarısız olmasını sağlamak için yerel işlemleri ve mesaj göndermeyi tek bir işleme koymaktır. Aşağı akış uygulaması mesaj sistemine abone olur ve mesajı aldıktan sonra karşılık gelen işlemi yürütür.

Mesaj şeması, temelde dağıtılmış bir işlemi iki yerel işleme dönüştürür ve ardından nihai tutarlılığı sağlamak için aşağı yönlü işletmenin yeniden deneme mekanizmasına dayanır. Mesaj temelli nihai tutarlılık çözümü de uygulamaya çok müdahaleci ve uygulama büyük miktarda iş dönüşümü gerektiriyor ve maliyeti yüksek.

4 GTS-Ali Dağıtılmış İşlem Çözümü

GTS, Alibaba'nın ara katman yazılımı departmanı tarafından geliştirilen dağıtılmış bir işlem ara yazılımıdır ve mikro hizmet mimarisinde dağıtılmış işlemler için tek noktadan çözüm sağlayabilir.

4.1 GTS'nin temel avantajları

  • Süper performans

    Çok sayıda yenilik sayesinde GTS, işlemsel ACID özellikleri ve yüksek performans, yüksek kullanılabilirlik ve düşük izinsiz giriş sorunlarını çözmüştür. Tek bir işlem dalının ortalama yanıt süresi yaklaşık 2 ms'dir ve 3 sunucudan oluşan bir küme, 30.000'den fazla TPS ile dağıtılmış işlem isteklerini destekleyebilir.

  • Çok düşük uygulama invazivliği

    GTS'nin iş müdahalesi düşüktür ve iş kodunun, işlemi en azından bildirmek için yalnızca bir satır ek açıklama (@TxcTransaction) eklemesi gerekir. İş ve işlemin ayrılması, mikro hizmetleri işlemlerden kurtarır.Microservisler işletmenin kendisine odaklanır ve artık ters arayüzler, idempotence ve geri alma stratejileri gibi karmaşık sorunları dikkate almak zorunda kalmaz, bu da mikro hizmet geliştirmenin zorluğunu ve çalışmasını büyük ölçüde azaltır. Tutar.

  • Tam çözüm

    GTS; EDAS, Dubbo, Spring Cloud vb. Dahil olmak üzere çeşitli genel hizmet çerçevelerini destekler. Bazı durumlarda, uygulamanın üçüncü taraf bir sistemin arayüzünü çağırması gerekir ve üçüncü taraf sistemi GTS'ye bağlı değildir. Şu anda, GTS'nin MT modu gereklidir. GTS'nin MT modu, TCC moduna eşdeğer olabilir ve kullanıcılar, her işlem aşamasının belirli davranışını kendi iş ihtiyaçlarına göre özelleştirebilirler. MT modu, özel optimizasyon ve özel senaryolarda özel işlevlerin gerçekleştirilmesi için daha fazla esneklik ve olanak sağlar.

  • Güçlü hata toleransı

    GTS, XA işlem koordinatörünün tek nokta problemini çözer, gerçek yüksek kullanılabilirliği gerçekleştirir ve çeşitli anormal koşullar altında katı veri tutarlılığı sağlayabilir.

4.2 GTS'nin uygulama senaryoları

GTS; finansal ödeme, telekomünikasyon, e-ticaret, ekspres lojistik, reklam ve pazarlama, sosyal ağ, anlık mesajlaşma, mobil oyunlar, video, Nesnelerin İnterneti, Araçların İnterneti vb. Dahil ancak bunlarla sınırlı olmamak üzere hizmet çağrılarını içeren birçok alanda uygulanabilir.

4.3 GTS ve Mikro Hizmetlerin Entegrasyonu

GTS üç bölümden oluşur: istemci (GTS İstemcisi), kaynak yöneticisi (GTS RM) ve işlem koordinatörü (GTS Sunucusu). GTS İstemcisi, esas olarak işlem sınırlarını tanımlamak ve işlemlerin başlatılması ve sonlandırılmasını tamamlamak için kullanılır. GTS RM, işlem dallarının oluşturulması, gönderilmesi ve geri alınmasını tamamlar. GTS Sunucusu, temelde dağıtılmış işlemlerin genel tanıtımından ve işlem yaşam döngüsünün yönetiminden sorumludur. GTS ve mikro hizmetlerin entegrasyonunun yapı şeması aşağıda gösterilmiştir: GTS İstemcisinin iş uygulamaları ile entegre edilmesi ve dağıtılması ve RM'nin mikro hizmetlerle entegre edilmesi ve dağıtılması gerekir.

4.4 GTS çıktı formu

GTS'nin şu anda üç çıktı formu vardır: genel bulut çıkışı, genel ağ çıkışı ve tescilli bulut çıkışı.

4.4.1 Genel bulut çıkışı

Bu çıktı biçimi Alibaba Cloud kullanıcıları içindir. Kullanıcının iş sistemi Alibaba Cloud'da dağıtıldıysa, genel bulut GTS'yi etkinleştirmek için başvurabilirsiniz. Açıldıktan sonra iş uygulamaları, GTS aracılığıyla hizmet çağrısının tutarlılığını sağlayabilir. Bu kullanım senaryosunda, iş sistemi ile GTS arasındaki ağ ortamı idealdir ve çok iyi performansa ulaşır.

4.4.2 Genel ağ çıkışı

Bu çıktı biçimi Alibaba Cloud kullanıcıları için değildir ve kullanımı daha rahat ve esnektir.İş sistemi İnternete bağlanabildiği sürece, GTS tarafından sağlanan bulut hizmetinden yararlanabilirsiniz (genel bulut çıktısının farkı, istemcinin bulut yerine yerel olarak kullanıcı üzerinde dağıtılmasıdır. üzerinde).

Normal bir ağ ortamında, örnek olarak iki yerel işlemi içeren global bir işlemi ele alırsak, işlem tamamlanma süresi yaklaşık 20 ms'dir ve 50 eşzamanlı işlem, çoğu işletme için yeterli olan 1000 TPS'nin üzerinde dağıtılmış işlemleri kolayca gerçekleştirebilir. Kamusal ağ ortamında, ağ kesintisini tamamen önlemek zordur Bu durumda, GTS yine de servis çağrılarının veri tutarlılığını garanti edebilir.

Belirli kullanım örnekleri için lütfen bölüm 4.7 GTS mühendislik örneklerine bakın.

4.4.3 Özel Bulut Çıkışı

Bu form esas olarak kendi tescilli bulut platformunu oluşturmuş büyük kullanıcılar içindir.GTS, tescilli bulut için dağıtılmış işlem hizmetleri sağlamak için doğrudan kullanıcının tescilli bulutunda konuşlandırılabilir. Şu anda, 10'dan fazla büyük işletmenin tescilli bulutu, dağıtılmış işlemler sorununu çözmek için GTS'yi kullandı ve performans ve istikrar, kullanıcılar tarafından sıkı bir şekilde test edildi.

4.5 GTS nasıl kullanılır

GTS, uygulamalara çok müdahaleci ve kullanımı kolaydır. Örnek olarak sipariş saklama uygulamasını ele alalım. Sipariş iş uygulaması, sipariş hizmetini ve envanter hizmetini arayarak sipariş işini tamamlar ve hizmet geliştirme çerçevesi Dubbo'dur.

4.5.1 İş başvurusu siparişi

Dağıtılmış işlemi başlatmak için iş işlevinin çevresinde @TxcTransaction ek açıklamasını kullanın. Dubbo uygulaması, GTS XID işlemini gizli parametreler aracılığıyla sunucuya yayar.

4.5.2 Hizmet sağlayıcı

Envanter yöntemini güncelleyin

4.6 GTS Uygulaması

GTS, Taobao, Tmall, Alibaba Pictures, Taopiao, Alibaba, 1688 vb. Gibi çeşitli Ali iş sistemlerinde yaygın olarak kullanılmaktadır ve 16 ve 17 yıllarında Double Eleven için yapılan büyük taleplerin testine dayanmıştır. Bir çevrimiçi iş sisteminin maksimum trafiği 100.000 TPS'ye (saniyede 100.000 işlem) ulaştı.

GTS, genel buluta ve özel buluta aktarıldıktan sonra, halihazırda 100'den fazla çevrimiçi kullanıcı vardır ve birçok kullanıcı, Spring Cloud, Dubbo, Edas ve diğer hizmet çerçevelerinin dağıtılmış işlem sorununu çözmek için GTS'yi kullanır. İş alanları elektrik, lojistik, ETC, tütün, finans, perakende, e-ticaret ve paylaşımlı seyahat gibi bir düzineden fazla sektörü içerir ve kullanıcılar tarafından oybirliğiyle kabul edilmektedir.

Yukarıdaki resim, paylaşılan bir seyahat sistemine uygulanan GTS ve SpringCloud'un entegrasyonudur. İş paylaşımı seyahat senaryosunda, GTS, büyük siparişleri ve on milyonlarca işlemi sağlamak için Nesnelerin İnterneti sistemi, sipariş sistemi, ödeme sistemi, işletim ve bakım sistemi, analiz sistemi ve diğer sistem uygulamalarının veri tutarlılığını destekler.

4.7 GTS'nin mühendislik örneği

GTS'nin genel bulut örnekleri için lütfen Alibaba Cloud web sitesine bakın. Genel ağ ortamında sample-txc-simple ve sample-txc-dubbo iki örnek proje sağlayın.

4.7.1.1 Örnek iş mantığı

Bu örnek, GTS'nin giriş niteliğindeki bir örneğidir. Vakanın iş mantığı, A hesabından B hesabına para transfer etmektir; burada A ve B, iki MySQL veritabanında bulunur. GTS işlemleri, A ve B hesaplarındaki toplam para miktarının her zaman aynı olmasını sağlamak için kullanılır.

4.7.1.2 Örnek nasıl oluşturulur

1) Veritabanı ortamını hazırlayın

MySQL'i kurun ve iki veritabanı db1 ve db2 oluşturun. Sırasıyla db1 ve db2'de txc_undo_log tabloları oluşturun (SQL komut dosyası için 4.7.3'e bakın). Db1 kitaplığında user_money_a tablosunu oluşturun ve db2 kitaplığında user_money_b tablosunu oluşturun.

2) Örnek indirin

Sample-txc-simple dosyasını yerel olarak indirin. Örnek zaten GTS SDK'yı içeriyor.

3) Yapılandırmayı değiştir

Txc-client-context.xml dosyasını sample-txc-simple / src / main / resources dizininde açın ve veri kaynağının url'sini, kullanıcı adını ve şifresini gerçek değerlerle değiştirin.

4) Numuneyi çalıştırın

Bu projeyi derlemek için sample-txc-simple dizininde build.sh çalıştırın. Derledikten sonra run.sh'yi çalıştırın.

4.7.2 sample-txc-dubbo örneği

4.7.2.1 Örnek iş mantığı

Bu durum, sipariş veren ve envanteri düşüren kullanıcıların iş mantığını simüle eder. Müşteri (Müşteri), Sipariş Hizmetini arayarak bir sipariş oluşturur ve ardından Stok Hizmetini çağırarak envanteri çıkarır. Sipariş hizmeti, sipariş veritabanını okur ve yazar ve envanter hizmeti, stok veritabanını okur ve yazar. GTS, hizmetler arası işlemlerin tutarlılığını garanti eder.

4.7.2.2 Örnek nasıl oluşturulur

1) Veritabanı ortamını hazırlayın

MySQL'i kurun ve iki veritabanı db1 ve db2 oluşturun. Sırasıyla db1 ve db2'de txc_undo_log tabloları oluşturun. Db1 kitaplığında siparişler tablosunu oluşturun ve db2 kitaplığında stok tablosunu oluşturun.

2) Örnek indirin

Örnek-txc-dubbo dosyasını yerel makineye indirin. Örnek zaten GTS SDK'yı içeriyor.

3) Yapılandırmayı değiştir

Sample-txc-dubbo / src / main / resources dizinini açın ve dubbo-order-service.xml ve dubbo-stock-service.xml dosyalarındaki veri kaynağının url'sini, kullanıcı adını ve şifresini gerçek değerlerle değiştirin.

4) Numuneyi çalıştırın

a. Programı derleyin

Projeyi derlemek için proje kök dizinindeki build.sh komutunu yürütün. Derlemeden sonra, sipariş hizmetine, envanter hizmetine ve istemciye karşılık gelen sample-txc-dubbo / client / bin dizininde üç çalışan betik, order_run.sh, stock_run.sh ve client_run.sh oluşturulur.

b. Programı çalıştırın

Kök dizinde run.sh komutunu çalıştırın, komut dosyası sırasıyla order_run.sh (sipariş servisi), stock_run.sh (stok servisi) ve client_run.sh (istemci programı) başlatacaktır.

4.7.2.3 Diğer talimatlar

Örnek, Multicast kayıt defterinin bildirim yöntemini kullanır. Makine bir kablosuz ağ kullanıyorsa, dubbo hizmeti adresi bağlarken ipv6 adresini alabilir ve bu jvm başlangıç parametresi ile devre dışı bırakılabilir. Yöntem, jvm başlangıç parametresi -Djava.net.preferIPv4Stack = true yapılandırmaktır.

4.7.3 SQL

4.7.3.1 txc_undo_log tablosu oluştur

TABLO OLUŞTUR txc_undo_log (

id bigint (20) NULL DEĞİL AUTO_INCREMENT COMMENT 'birincil anahtar',

gmt_create tarihsaat BOŞ YORUM DEĞİL "saat oluştur",

gmt_modified datetime NOT NULL COMMENT 'değiştirilmiş tarih',

xid varchar (100) BOŞ DEĞİL YORUM 'Global işlem kimliği',

branch_id bigint (20) BOŞ YORUM DEĞİL 'Şube işlem kimliği',

rollback_info longblob BOŞ DEĞİL COMMENT'LOG ',

status int (11) NOT NULL COMMENT'status ',

sunucu varchar (32) BOŞ DEĞİL YORUM 'Şubenin bulunduğu DB IP',

BİRİNCİL ANAHTAR (id),

ANAHTAR birleşim anahtarı (xid, branch_id)

) MOTOR = InnoDB AUTO_INCREMENT = 211225994 DEFAULT CHARSET = utf8 COMMENT = 'İşlem günlüğü tablosu';

4.7.3.2 user_money_a tablosu oluştur

TABLO OLUŞTUR user_money_a (

id int (11) NULL DEĞİL AUTO_INCREMENT,

money int (11) VARSAYILAN NULL,

BİRİNCİL ANAHTAR (kimlik)

) MOTOR = InnoDB AUTO_INCREMENT = 2 DEFAULT CHARSET = utf8;

4.7.3.3 user_money_b tablosu oluştur

TABLO OLUŞTUR user_money_b (

id int (11) NULL DEĞİL AUTO_INCREMENT,

money int (11) VARSAYILAN NULL,

BİRİNCİL ANAHTAR (kimlik)

) MOTOR = InnoDB AUTO_INCREMENT = 2 DEFAULT CHARSET = utf8;

4.7.3.4 Tablo siparişleri oluştur

TABLO siparişleri OLUŞTURMA (

id bigint (20) BOŞ DEĞİL AUTO_INCREMENT,

user_id varchar (255) NULL DEĞİL,

product_id int (11) BOŞ DEĞİL,

sayı int (11) NULL DEĞİL,

gmt_create zaman damgası BOŞ DEĞİL,

BİRİNCİL ANAHTAR (kimlik)

) MOTOR = MyISAM AUTO_INCREMENT = 351 DEFAULT CHARSET = utf8

4.7.3.5 Tablo stoğu oluştur

TABLO stoku OLUŞTUR (

product_id int (11) BOŞ DEĞİL,

fiyat dalgalanması BOŞ DEĞİL,

miktar int (11) NULL DEĞİL,

BİRİNCİL ANAHTAR (ürün_kimliği)

) MOTOR = InnoDB VARSAYILAN KARAKTER = utf8

5 Özet

GTS, Alibaba içinde yaygın olarak kullanılmaktadır ve Double Eleven'daki en yoğun trafik testini geçmiştir. Dahili olgunluğun ardından, birçok kullanıcıya özel ve halka açık bulutlarda hizmet verildi ve birçok kullanıcı, iş hizmetlerinin dönüştürülmesinden sonra dağıtılmış işlemlerin dikenli teknik sorunlarını çözen günlük on milyonlarca / milyar işlem hacmine sahip.

Yalnızca işlemlerin ACID özelliklerini tatmin etmekle kalmayıp aynı zamanda yüksek performans, yüksek kullanılabilirlik ve düşük iş müdahalesine sahip dağıtılmış bir işlem ara yazılımı olarak GTS'nin gelecekte daha fazla geliştiriciye yardımcı olabileceğine ve sektörün sürdürülebilir gelişimini teşvik edebileceğine inanıyoruz.

Beklenmedik bir şekilde, BMW ile aynı adı taşıyan çok sayıda araba var!
önceki
Dünya Kupası harika bir sahnede yeniden ortaya çıkıyor: Oyuncu yanlış çorap giydiği için 470.000 para cezasına çarptırıldı ve ayrıca bir yudum su içtiği için para cezasına çarptırıldı.
Sonraki
Yakıt deposuna şeker eklemek motora zarar verir mi? Bu bilgi bilinmelidir!
Douyin, birden fazla flaşla video sosyal uygulamasını başlattı, 72 saat sınırlı bir süre sosyal baskıyı hafifletmek için görülebilir
Klasik NZXT S340 Elite şasi ön satışının yeniden şekillendirilmesi başlıyor
Şampiyonayı kazanmanın favorisi düştü! Çok utanç verici, Sun Xingmin Asya Kupası'na 0 golle veda etti!
8 yıl Çin'e girdikten sonra Toyota RAV4 ne tür cevaplar verdi?
İlk halk! Cainiao Esnek Zamanlama Sisteminin Mimari Tasarımı
İngiltere'nin istihdamdaki en büyük başarısızlığı: 6 maçta 0 gol, Manchester City forvet nasıl ana güç haline geldi?
Ferrari geliştirme tarihi: Enzo Ferrari'nin efsanevi yaşamına tanıklık etti
Rockets'ın en büyük başarısızlığı I.Dünya Savaşı'nda tespit edildi ve Paul öfkeliydi! Morey onu Yeni Yılda tutuyor mu?
"Wembiya" yaklaştı, Jinshan Bölgesi, depolama kapasitesi oluşturmak, sakinleri tahliye etmek ve yerleştirmek için acilen suyu boşalttı
Ulusal Futbol Asya Kupası'nın en büyük boncuğu! Bir dakikadır oynamadı ama taraftarlar bunu dört gözle bekliyorlardı!
Sohu'nun web sitesinin dışında bir çiftliği mi var? Dün, Pentium X40 sürücüleri bütün gün oradaydı
To Top