从新手到熟练-到精通

新手0-3个月 入门基础,按照规范,会写业务功能的代码,简单的设计数据库

熟练 1-3年 熟悉使用框架还有工作经验,知道那里有坑,各种业务场景下需要的技术点的应用

精通3-10年

       熟悉底层原理如比如:我们常用的map?底层数据结构是什么?jdk7与jdk8的区别?为什么说是非线程安全的?为什么源码中用位移什么,系统架构设计等?

       根据业务选用需要的技术,不受技术的约束,写代码写画图,把思路理清晰

 

看看招聘要求? 有大容量、高性能、高并发、分布式系统的设计开发经验者优先

高并发、分布式、高性能三个点的知识和技术都有啥?

 

1.分布式,微服务 https://www.cnblogs.com/xybaby/p/7787034.html

  • 负载均衡:

    Nginx:高性能、高并发的web服务器;功能包括负载均衡、反向代理、静态内容缓存、访问控制;工作在应用层

    LVS: Linux virtual server,基于集群技术和Linux操作系统实现一个高性能、高可用的服务器;工作在网络层

  • webserver:

    Java:Tomcat,Apache,Jboss

    Python:gunicorn、uwsgi、twisted、webpy、tornado

  • service:  

    SOA、微服务、spring boot,django

  • 容器:

    docker,kubernetes

  • cache:

    memcache、redis等

  • 协调中心:

    zookeeper、etcd等

    zookeeper使用了Paxos协议Paxos是强一致性,高可用的去中心化分布式。zookeeper的使用场景非常广泛,之后细讲。

  • rpc框架:

    grpc、dubbo、brpc

    dubbo是阿里开源的Java语言开发的高性能RPC框架,在阿里系的诸多架构中,都使用了dubbo + spring boot

  • 消息队列:

    kafka、rabbitMQ、rocketMQ、QSP

    消息队列的应用场景:异步处理、应用解耦、流量削锋和消息通讯

  • 实时数据平台:

    storm、akka

  • 离线数据平台:

    hadoop、spark

    PS: apark、akka、kafka都是scala语言写的,看到这个语言还是很牛逼的

  • dbproxy:

    cobar也是阿里开源的,在阿里系中使用也非常广泛,是关系型数据库的sharding + replica 代理

  • db:

    mysql、oracle、MongoDB、HBase

  • 搜索:

    elasticsearch、solr

  • 日志:

    rsyslog、elk、flume

 

2.高性能 高并发 参考

https://www.cnblogs.com/kisswind/p/6476021.html

https://blog.51cto.com/13672983/2121605

web高并发的核心肯定是集群,前面有人回答了。这个不用怀疑!所有公司都是这么实现的。
那么,为了现在活着将来的集群,我们要做什么准备?大概说一些会用到,希望对你有所帮助。
1、动静分离,静态资源请求与动态请求分离,项目中需要访问的图片、声音、js/css等静态资源需要有独立的存放位置,便于将来实现静态请求分离时直接剥离出来,比如nginx可以直接配置图片文件直接访问目录,而不需要经过tomcat。这样tomcat就可以专注处理动态请求,操作数据库数据处理之类的。静态请求代理服务器性能比tomcat高很多。
2、引入缓存,数据库缓存、页面缓存,这东西好用不复杂,搞明白什么地方适用最重要。简单的例子是频繁读取,不修改的地方最适用。也是后续集群做数据共享的一个方式之一,集群环境下,经常会碰到数据共享问题。
3、如果将来数据量大,单一数据库成为瓶颈时,数据库的读写分离来了。数据库集群,读写分离,分表分区。mysql对读写分离这些还是有点支持的,没仔细用过。
4、如果项目发展壮大了,已经过亿用户了,ok系统拆分来了。用户管理系统、订单系统,或者体育新闻系统、娱乐新闻系统等。保证一个系统当掉时不影响另一个,同时分担单系统压力。每个系统之下是前面3条!!
如果这一切都还搞不定,那你公司一定比谷歌还牛B了,哈哈……可喜可贺!

 

技术跟随业务的发展而改变,再选型技术架构的时候,成熟的方案是比较多的。

 

Logo

开源、云原生的融合云平台

更多推荐