6点のインタビュー疑いの高い並行システムを取得するためのJava開発者の3年

序文

あなたは、実際には、あなたが高い同時実行の根本原因から開始する必要がない問題を、理解したい場合は実際には、いわゆる高同時実行、なぜ高い並列性を持っていますか?なぜ高い同時実行非常に高速なハードウェア?

基本的にはすぐに終了し、毎秒同時2または3000をサポートするときにシステムの始まりは、データベースに接続されているので、少し平野は、非常に単純な、と述べたが、データベースが知っています。だから私は、多くの企業を言っている、乾燥し、技術の始まりは時々、システムがハングアップ圧力を運ぶことができなかった、あまりにも速く、事業開発の結果、比較的低いです。

もちろん、ハングアップしていない理由は、ハングアップ?データベースが瞬時に同時の毎秒8000分の5000、あるいは数千を運ぶ場合、それは単に、このような高い同時実行を運ぶことはなかったので、ダウン、MySQLのようになります。

なぜ高い同時実行が退行しましたか?今より多くの人々がインターネットを使用しているため、アプリ、ウェブサイトの多くは、システムの負荷が高い同時要求で、ピークは通常、毎秒数千によって複雑にすることができます。毎秒数十万人に数万によって複雑に、二から一一などあればどうすることも可能です。

v2-61ced2ef435bf72ed3eb9f340f4dbe12_hd.png

だから、非常に高い同時実行、すでに非常に複雑なビジネス、迅速なプレーで結合されましたか?本当に強力な、それは人々の並行性の高いアーキテクチャで複雑なビジネス・システムでプレーする必要がありますが、私はこの質問に答えるべきかについて、あなたに教えていません。

それは、以下の6時00分に分けることができます。

1.システムの分割

2.キャッシュ

3.MQ

4.サブライブラリーのサブテーブル

別々の読み取りと書き込み

6.ElasticSearch

v2-3474ccd46e089129978bf542b018f871_hd.jpg

分割システム

ダボLaigaoを有する複数のサブシステムへのシステム。各システムは、その後も、データベースなので、すでにライブラリーは、今や複数のデータベースには、高い同時実行それを運ぶことができません。

キャッシュ

キャッシュは、キャッシュを使用する必要があります。並行性の高いシナリオ、読み取りと書き込みのほとんどは、キャッシュがたくさん歩かなければならないときに、あなたが読んで、その後、データベースとキャッシュに書き込むことができ、少ないです。すべての後、人々が簡単に同時単一の数万人をRedisの。あなたのプロジェクトについて考えることができるように、主な要求を運ぶシーンを読んでいる人は、どのようにキャッシュを持つ高い並列性を抵抗します。

MQ

MQは、MQを使用する必要があります。あなたはまだ狂気、頻繁な、追加および削除の追加および削除に従事するデータベースの数十で動作事業として、高い同時書き込みシーンを表示されることがあります。あなたはRedisのは、人々がキャッシュされ、それは確かにしないだろう書き込み運ぶために使用する場合は、その高い同時実行は間違いなく、あなたのシステムをたむろし、いつでもLRUデータがアップし、データ形式は、トランザクション・サポート、また、非常にシンプルではありません。だから、MySQLのああでMySQLを使用する必要がありました。

那你咋办?用 MQ 吧,大量的写请求灌入 MQ 里,排队慢慢玩儿,后边系统消费后慢慢写,控制在 mysql 承载范围之内。所以你得考虑考虑你的项目里,那些承载复杂写业务逻辑的场景里,如何用 MQ 来异步写,提升并发性。MQ 单机抗几万并发也是 ok 的,这个之前还特意说过。

分库分表

分库分表,可能到了最后数据库层面还是免不了抗高并发的要求,好吧,那么就将一个数据库拆分为多个库,多个库来扛更高的并发;然后将一个表拆分为多个表,每个表的数据量保持少一点,提高 sql 跑的性能。

读写分离

读写分离,这个就是说大部分时候数据库可能也是读多写少,没必要所有请求都集中在一个库上吧,可以搞个主从架构,主库写入,从库读取,搞一个读写分离。读流量太多的时候,还可以加更多的从库。

ElasticSearch

Elasticsearch,简称 es。es 是分布式的,可以随便扩容,分布式天然就可以支撑高并发,因为动不动就可以扩容加机器来扛更高的并发。那么一些比较简单的查询、统计类的操作,可以考虑用 es 来承载,还有一些全文搜索类的操作,也可以考虑用 es 来承载。

欢迎大家关注我的公种浩【程序员追风】,文章都会在里面更新,整理的资料也会放在里面。

v2-40f9168e2899edbf59d6d231f238db9b_hd.png

上面的 6 点,基本就是高并发系统肯定要干的一些事儿,大家可以仔细结合之前讲过的知识考虑一下,到时候你可以系统的把这块阐述一下,然后每个部分要注意哪些问题,之前都讲过了,你都可以阐述阐述,表明你对这块是有点积累的。

说句实话,毕竟你真正厉害的一点,不是在于弄明白一些技术,或者大概知道一个高并发系统应该长什么样?其实实际上在真正的复杂的业务系统里,做高并发要远远比上面提到的点要复杂几十倍到上百倍。

あなたは考慮する必要がありますどのように参加するために、単一のライブラリのサブライブラリーのサブテーブルとサブテーブルサブライブラリーにする必要があるものを、サブライブラリーサブテーブルを必要としない、単一のテーブル、どのようなデータがデータを置くことができ、キャッシュに行くべきKangzhu高い同時実行要求した後、あなたは複雑な業務システムの分析を完了した後、高い同時実行のシステムアーキテクチャの変革に参加するためにステップバイステップする必要があり、このプロセスは非常に複雑であり、かつて一度、よくやった、あなたは市場にいますこれは非常に人気が出るだろう。

実際には、企業の真の価値のほとんどは、あなたが建築のいくつかの基本的な知識に関連するいくつかの技術的な高い同時実行性を持っていないことのRedis、Elasticsearch、高い並列性をこの1、アーキテクチャは、RocketMQは、カフカは、あなたが知っている、唯一のことができますこれは、第二級の才能です。何千行ものコードの複雑な分散システムの何百、ステップ、アーキテクチャバイステップのうち、建築の設計と実践が高すぎる同時実行の人で、この経験は貴重なものです。

遂に

サポートのおかげで、ヨーヨーの記事を覚えて賞賛のポイントのように、みんなと共有へようこそ!


おすすめ

転載: blog.51cto.com/14442094/2436858