本篇文章来自于2018年12月22日举办的《阿里云栖开发者沙龙—Java技术专场》,徐雷专家是该专场第三位演讲的嘉宾,本篇文章是根据徐雷专家在《阿里云栖开发者沙龙—Java技术专场》的演讲视频以及PPT整理而成。
摘要:Java从诞生以来几乎一直是排名第一的语言,长期霸榜。在架构师成长道路中,学习Java是绝对是最正确的选择。本文分别分别介绍了Java平台的优势,国内转Java架构的互联网公司的和几种成熟的Java架构的演变路程。在最后,为大家推荐了最成熟的Java架构技术选型路线。
演讲嘉宾简介:
徐雷,资深架构师,MongoDB中文社区联席主席,阿里云栖Java讲师,阿里云大学MongoDB讲师,MongoDB中文社区主席,专家组成员;专注于分布式架构,Java Spring Boot、Spring Cloud、MongoDB、Redis;10年+开发经历,喜欢专研技术问题;《MongoDB实战》第2版、《24种云计算架构设计模式》译者
本次直播视频精彩回顾,戳这里!https://yq.aliyun.com/live/721
PPT下载地址:https://yq.aliyun.com/download/3236
以下内容根据演讲嘉宾视频分享以及PPT整理而成。
本次的分享主要围绕以下三个方面:
一、Java为王
Java从诞生以来一直是排名第一的语言,长期霸榜。国外有一个Programming Language Rank网站,提供了各类编程语言百分比的排名(如下图)。Java语言长期排名第一,百分比曾经一度达到26%,这个数据是非常高的。很多东西之所以流行是有内在原因的,Java也是一样,Java领域好东西很多。最近因为Oracle提出要对Java收费,Java语言排名有稍微波动,Oracle作为传统的软件公司,缺少互联网开源社区思维。但尽管Java语言被折腾的死去活来,但是生命力还是经受得住考验的。同样,其中还有最近非常火的Go语言,以及Python语言。因为AI的流行,Python语言也是非常火热。
最近很多人会担心Java收费的问题,但如果仔细查看过官方的科技文档的话会注意到其中写的是对Oracle JDK收取维护费用,由于整个Java的生态是非常大的,Oracle JDK 并不等于Java JDK。另外国内BAT几大公司早已考虑到这个问题,他们都有自己的Java JDK,如Open JDK。所以完全不用担心Java会收费,Java之父James Gosling跳槽到亚马逊,亚马逊前不久也已经承诺永久免费自己的JDK版本,并且支持最新的Java 11。
二、Java架构互联网公司
在一个月之前,国内发布了关于互联网公司的排名,其中前100名的公司中超过95%的公司都选择了Java架构。所以Java学得好,找到高薪工作并不是难题。
语言本身没有优劣之分,但是架构体系确实有成熟度和完善度的区别。下图列出了国内转Java架构的一些互联网公司,在2011年左右,京东最早开始转Java,现在看来是可以说是非常有先见之明的选择。作为公司的架构师或者技术专家,在选择技术解决方案时一定要符合公司本身的情况,而不是依据自己的喜好。同时注意不要选择多种语言,尽量选择统一的语言,因为语言越少,风险也就越可控。后期可以根据业务发展需要选择合适的语言框架。
目前的互联网并发架构中,天猫双11是最好的分布式高并发架构的案例。去年双11的MySQl数据库写入是每秒4000万,今天就已经超过1个亿。相比之下,美国的黑五远没有双11的并发高,一是因为人口差距,另外黑五的活动力度并没有双11大,在美国,平时也可以买到很便宜的商品。可以说阿里现在的技术架构在领导着国内互联网技术架构的发展,所以大家可以平时多关注阿里的技术峰会,跟进学习最新的技术。
国内互联网企业在技术架构选型方面绝大多数是选择开源,免费,跨平台和成熟的技术路线。在早期,国内很多大的国企使用的都是Oracle,IBM的技术。到现在,国内几大银行也开始走开源免费的路线。这是因为之前没有比较成熟的系统架构路线和案例,但在近十几年,BAT几大公司已经为大家踩出来了这种技术路线,带领着很多企业往这个方向走。
下图列出了很多开源社区的技术框架,涵盖的范围很大,前端后端以及中间件,包括操作系统。操作系统的话,Linux最火的CentOS和Ubuntu是互联网公司用的比较多的系统。Java服务器是Tomcat,消息队列的话中小型公司可以选择RabbitMQ,大型公司可以用Kafka。要注意,架构师在选择技术框架时,一定要学习它们背后的原理,不停的钻研,不能停留在只会用,只会用的架构师很快会被淘汰掉。在做架构设计时,永远要把公司的需求放在第一位,永远为公司的业务服务。而且架构设计往往没办法一步到位,这个过程一定是可迭代的,可进化的。
三、Java架构案例
SOA架构
电商领域有很多技术架构,SOA架构是面向服务的架构,大概是10年前提出的架构,但到现在还是有很多企业在用SOA架构。
移动互联网架构
在SOA的基础上,技术架构一直在慢慢演化。下图移动互联网的架构,继续演化细分更多层。
现在用的比较多Java架构是基于Spring MC 或者Spring boot。简单的三层架构其实并没有什么难度,但要放到更复杂的分布式环境的,可能会遇到许多挑战性的问题。而且同时要把一个架构周边的关键技术也要掌握,这样才会具备竞争力。作为一名架构师,还要提高自身的沟通能力,理解并能够将公司或者客户的需求变现落地。
物联网IOT架构
物联网IOT架构需要对接一些硬件设备,比如智能手环,高德地图,车载设备等等。因此物联网的数据采集频率会比较高,很多时候会涉及到大数据,虽然可以用Go和C#等别的语言做物联网架构,但是在大数据领域,Hadoop,Spark等几个主要的技术框架基本是基于Java的,所以在选择语言时,选择Java还是最合适而且风险最小的,另外团队内也可以形成技术积累。
服务治理架构
下图是阿里提出的Dubbo架构,绝大多公司还用不到这个架构。因为很多公司还没有遇到如此复杂的分布式系统架构问题。Dubbo考虑对接不同的分布式协议,注意不是所有的协议都是HTTP,Dubbo支持的协议多种多样,而且都提供了不同解决方案。Dubbo架构中Elastic Computing思想非常好,它可以做到在高并发之后进行弹性扩容。
微服务架构
选择微服务架构要视自己公司的情况而定,不是所有的系统都适合微服务架构。因为有许多潜在的问题。目前比较成熟的微服务解决方案是Java Spring Cloud。当然也有开源的Service Mesh,但是它的技术栈还不是太成熟。从字面层面上说,微服务是把大服务拆分成小的服务,随之而来,这会涉及到很多周边的问题,其中包括安全问题,通信协议问题,部署问题,统一接口问题和代理问题等等。如果想学习微服务,一定要关注这些问题,这才是微服务最有价值的地方。微服务架构中使用MongoDB和Redis的还是比较多的。近四年来,Spring Cloud,包括社区协同开发贡献的许多框架,以及阿里开源的微服务框架Spring Cloud Alibaba,是的Java的微服务方案更加的成熟,已经经过千百亿级别消息互联网公司的验证。可以说微服务架构的成熟技术方案都是基于Java的。目前来讲,微服务架构的Java解决方案坑是最少的,最成熟的,虽然有几个语言抄袭的Java某个微服务框架,但是无法抄袭整个不断变化发展的平台。
大数据架构
Hadoop技术框架很多大公司都在用,目前主要的最成熟的大数据架构解决方案也都是基于Java,当然也有一部分使用Scala,但其实Scala也算是Java语言的一个变种。另外还有些轻量级技术解决方案,如Spark,Storm,Flink等等。不同的方案解决问题的侧重点是不同的,在选择技术解决方案时要注意总体方向要选对。
IOT+大数据架构
技术架构在早期是单一的,但是到后期一定是多重架构综合起来。比如电商领域,后期会进行微服务架构进行局部的改造,再慢慢引入大数据架构。另外要注意,在做数据采集时,每个数据节点都是集群架构模式,如果机器宕机,数据会直接丢失,无法恢复。所以在技术路线选型上推荐下图中的方案,基于Open JDK和Java Spring Cloud这套路线。综合来讲,Java架构是最成熟的,而且,它可以一次提供几套成熟的技术架构方案。
本文由云栖志愿小组董黎明整理 编辑
社群技术交流:【阿里Java技术进阶】每周在群内进行【技术培训直播】和【在线回答技术问题】欢迎点击link入群: http://tb.cn/gXRstIw
或者 钉钉扫码入群:
相关文章:
阿里云栖开发者沙龙-Java技术专场 (最全资料下载)
【Java开发者专场】阿里专家梁笑:2018双十一下单成功率99.9%!供应链服务平台如何迎接大促
【Java开发者专场】阿里专家墨玖:淘票票工程师文化
【Java开发者专场】阿里专家杜万:Java响应式编程,一文全面解读