6 점 인터뷰 의심 고도의 동시성 시스템을 얻을 수있는 자바 개발자 3 년

머리말

당신은, 사실, 당신이 높은 동시성의 근본 원인에서 시작해야 않는 문제를 이해하려면 사실, 소위 높은 동시성, 왜 높은 동시성을 가지고? 왜 높은 동시성 매우 빠른 하드웨어?

시스템의 시작이 데이터베이스에 연결되어 있지만, 데이터베이스가 기본적으로 빨리 완료, 두 삼천 동시 초당 지원하기 위해 때를 알고 있기 때문에, 약간의 일반은 매우 간단했다. 그래서 내가 말한 많은 기업, 건조, 기술의 시작은 상대적으로 낮은, 너무 빨리 사업 개발의 ​​결과는 때로는 압력을 수행 할 수없는 시스템은 전화를 끊었다.

끊지 이유는 물론, 전화를 끊었? 데이터베이스가 즉시 초당 8,000분의 5,000, 또는 동시의 수천을 수행하는 경우는 단순히 높은 동시성을 수행하지 않았기 때문에, MySQL과 같이 아래로 될 것입니다.

왜 높은 동시성 회귀? 이제 점점 더 많은 사람들이 인터넷, 많은 응용 프로그램, 웹 사이트를 사용하기 때문에 시스템 부하가 높은 동시 요청하고, 피크 정상, 초당 수천 복잡 할 수있다. 무엇 2-11과 수만 초당 수천 수백 수천의 복잡, 등이 가능합니다.

v2-61ced2ef435bf72ed3eb9f340f4dbe12_hd.png

그래서 너무 높은 동시성, 이미 복잡한 비즈니스, 빠른 플레이와 결합? 정말 강력한, 그것은 사람들의 높은 동시성 아키텍처의 복잡한 비즈니스 시스템에서 재생해야하지만, 나는 당신이이 질문에 대답하는 방법에 대해 얘기하지 않습니다

그것은 다음과 같은 6시로 나눌 수 있습니다 :

1. 시스템 분할

2. 캐시

3.MQ

4. 서브 라이브러리 서브 테이블

읽기 및 쓰기 별도

6.ElasticSearch

v2-3474ccd46e089129978bf542b018f871_hd.jpg

분할 시스템

두보 Laigao 여러 서브 시스템으로하는 시스템. 각 시스템은 심지어 데이터베이스, 아직 도서관, 지금은 여러 데이터베이스는 높은 동시성을 수행 할 수 없습니다.

캐시

캐시는 캐시를 사용합니다. 높은 동시성 시나리오, 읽기와 쓰기의 대부분은 캐시가 많이 걸을 수없는 경우 다음 읽고 다음, 데이터베이스 및 캐시에 쓸 수 적습니다. 결국, 사람들은 쉽게 동시 단일 수만 레디 스. 당신이 당신의 프로젝트에 대해 생각할 수 있도록, 주요 요청을 전달하는 장면을 읽는 사람들은, 어떻게 캐시 높은 동시성을 저항한다.

MQ

MQ는 MQ를 사용합니다. 당신은 여전히 ​​기업이 미친 자주, 추가 및 삭제 추가 및 삭제,에 종사하는 데이터베이스의 수십 운영으로 높은 동시 쓰기를 장면을 나타날 수 있습니다. 당신은 레디 스 사람들이 캐시, 그것은 확실히하지 않을 것이다 쓰기 수행하기 위해 사용하는 경우 그 높은 동시성 확실히, 시스템을 정지 언제든지 LRU 데이터가 있었다, 데이터 형식에는 트랜잭션 지원도 매우 간단합니다. 그래서 MySQL의 아와 MySQL을 사용했다는 것을.

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

分库分表

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

读写分离

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

ElasticSearch

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

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

v2-40f9168e2899edbf59d6d231f238db9b_hd.png

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

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

당신은 고려해야합니다 가입하는 방법을 하나의 라이브러리의 서브 라이브러리 서브 테이블의 서브 라이브러리 서브 테이블을 하나의 테이블을 필요로하지 않는, 서브 테이블의 서브 라이브러리 할 필요가 무엇인지, 데이터는 데이터 Kangzhu 높은 동시성을 넣을 수 있습니다 캐시로 이동해야하는지 요청 후, 당신은이 프로세스는 한 번에 한 번 수행, 매우 복잡하고 잘, 당신은 시장에있어 복잡한 비즈니스 시스템의 분석을 완료하고 높은 동시성의 시스템 아키텍처의 변화에 ​​가입 단계별로 필요 그것은 매우 인기가있을 것입니다.

사실,이 회사의 실제 가치의 대부분은, 당신이 아키텍처의 기본적인 지식에 관한 몇 가지 기술적 인 높은 동시성을하지 않는 것이 레디 스, Elasticsearch 높은 동시성이 하나, 아키텍처, RocketMQ은, 카프카는, 당신이 알고 만 할 수 그것은 두 번째 수준의 재능이다. 단계, 건축, 디자인과 건축의 실천에 의해 코드, 단계 수천 줄의 복잡한 분산 시스템 수백 너무 높은 동시성 명이며,이 경험은 가치가있다.

최종적으로

요 기사, 지원에 대한 감사를 기억 찬양의 점처럼, 모든 사용자와 공유에 오신 것을 환영합니다!


추천

출처blog.51cto.com/14442094/2436858