分布式领域攻与伐(2/9)(Spring科)

说在前面,如果您连基本的 maven 经典项目结构都搞不清楚,那么本文其实不适合您

(换句话说,至少玩过 Spring 才行;仅 Java Web、Servlet 基础貌似不够看)

旧时代

大概 2017 年之前,我都称之为 旧时代。

划分的依据是,我知道的玩 Spring 框架的一批前辈也从一线城市回成都开了自己的工作室了

Spring的历史就不说了,我接触Spring的时候是2.5版本,那个时候的最佳实践还是配置整合环境用xml+开发用注解。

到现在 Spring5 引入底层 RxJava 这类响应式框架的产品,似乎玩法一点点在变。

其实玩熟悉了 Spring5 这个框架(包括 Spring Web MVC框架)之后的过程几乎就是行云流水。

SpringBoot时代

SpringBoot 这个脚手架充分吸收 Spring4 的最佳实践(或者说其他动态语言的开发方式)基于 Java 代码配置的方式,然后整了一套预定的 Starter 给我们,至此自己配置 aop, bean, 过滤器,拦截器等时代彻底完结。至于隐私数据比如连接池,端口,密码,日志等,它帮我们也留出位置,查询一下 autoconfig 也能知道。

说白了,SpringBoot 至少解决了:

  • 开发前的框架整合繁琐性 (把一些默认的框架整合进入 Spring)
  • 开发过程中的配置
  • 测试,日志等给与了比较官方处理 (直接集成进来,并且改进了单机时代的使用方式,更加兼容分布式,微服务)
  • 部署阶段 (内嵌容器,jar包方式)

然而,就我看来,相较于其他动态语言,比如 Python,Spring系只能说是跟上时代的步伐,依旧逃不过臃肿的评价。

尽管比之以前好很多,我在 Spring2.5经常遇到的问题就是某个jar包版本不对就会导致一些项目整个都跑不起来,再来看看 SpringBoot,这些问题就好了很多很多。(至于 Java生态会不会死,我觉得不会,您去看看政府,国有企业的某些系统,网站就知道了)

但这还没有完,SpringBoot 既然替代我们解决依赖啊,配置啊,那么它自然也拿出了很多统一的解决方案,比如安全方面的 SpringSecurity,存储管理的SpringData,响应式处理的 Spirng WebFlux 等等。(其实 Spring Web MVC 也算,它主要解决 JavaWeb 配置麻烦的问题,只是这个很早就接触了)

补充一点:

一般公司,按照干活的标准,到这里已经完事儿了,后面如果和我一样主攻分布式领域,则后端到此还不够,此时充其量就是个中级开发者

SpringCloud时代

网飞(Netflix) 真的是害人不浅 — 开个玩笑

网飞搞出一个 SpringCloud 平台(一些列技术框架),用于分布式,网格服务,微服务,然后内部的精华突然不对外了。

接着,Alibaba 接手。不过就我对国家政治,经济的了解,很质疑它们有没有资金,有没有意志搞好。

光秃秃的谈 Spring Cloud 技术没有太多意义,因为它的引入整个面向的问题已经不再是单机,转战到了分布式

但分布式相关的问题本身就多样,也很复杂,毕竟网络不如单机环境的可靠和简单。

正因为如此,一般的小公司搞不起,大公司会根据自己的环境自己弄一套专门适用于自身的,所以我们市面上看到 SpringCloud 的所谓通用解决方案,在我看来其实也就是提供了一种解决思路。一种用于解决这些问题的思路。

哪些问题? 举个局部:

分布式问题域-部分列举

就像 2019 年似乎大家都在谈服务网格(service mesh),然而我看到真正有该需求的已经搞起了,而没有搞的还在大谈特谈这个 buzz word。

shrugg。

博客毕竟不是笔记,我这里能给的提示就一条:

  • 这里的技术&框架太多,要选就选一个平台。(举例: 从服务配置中心出发看看,统一平台的优势)

有余力的话,做好在平台不足的情况下自己能补齐框架不足的准备

当然,我相信走到这里的一般也都是大佬了(工作7,8年的人),无需我多言。


后话

学习过程: 全程官方文档,然后 youtube 视频;先视频看看猪是怎么跑的,再官方文档系统学习

  • 中途要咨询一下在大厂,小厂的朋友,看看业界实际的做法 (有些技术根本就过时了或者不是重点)

由于我是有基础的,所以这个方案可能不一定适合所有人,甚至是有基础的人,仅供参考

至此,个人已经完成切换到 Java-分布式 的转换,故此借此文记一笔。

这个过程我也明显看到了技术栈确实存在优劣之分,就像通背和太极各有优劣一样,问题是用的人的水平不同,导致写出的基础服务,软件完全是两个样子,有的人写的服务是 re-try,有的人则是 fail-fast,当然也有自己随着性子搞一套的。

其次在这个过程,从自身,从其他研发人员身上我也深刻的认知到了三个无法回避的问题:

  • 青铜真的带不起! (远离猪队友;可能公司层面,它不喜欢这个态度,然而确实是猪队友带不起啊)
  • 宁欺老无力,莫请少年穷。(偏远山村出来的同学,最终也实现了从发展中国家移民到发达国家的梦想;虽然没有实现财务自由,但也确实让我知道年轻人不要自我设限;清华的证书也不过是当届当局政府颁发的,斯坦福的未必不如它的)
  • 做人最重要的还是要自信。 (这本是我出国接触到大韩民族,大和民族的同龄人,交流碰撞之后的感触;然而学习技术知识的时候,看到现在的某些依仗大平台而有些名声的互联网头部大佬的水平。。。bD,还是 降 D 小调 吧)

懦弱的人遇到问题不由自主的找各种理由选择逃避,勇敢的人则是心很大的,正面对抗,积极面对。

最后,渐入中年,要从潮人、达人、大神转型到 低调内敛 ,把 雷厉风行 藏在内里吧。

感谢阅读,谢谢您的时间。


2019年12中旬创建,2020年1月初,填充本文完毕


   转载规则


《分布式领域攻与伐(2/9)(Spring科)》 欧文 采用 知识共享署名 4.0 国际许可协议 进行许可。