前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【方向盘】认为:开发者已无理由再用Java EE

【方向盘】认为:开发者已无理由再用Java EE

作者头像
YourBatman
发布于 2022-10-31 03:12:26
发布于 2022-10-31 03:12:26
82200
代码可运行
举报
文章被收录于专栏:BAT的乌托邦BAT的乌托邦
运行总次数:0
代码可运行

本文已被https://yourbatman.cn收录;女娲Knife-Initializr工程可公开访问啦;程序员专用网盘https://wangpan.yourbatman.cn;技术专栏源代码大本营:https://github.com/yourbatman/tech-column-learning;公号后台回复“专栏列表”获取全部小而美的原创技术专栏

你好,这里是Java方向盘,我是方向盘(YourBatman),坐稳扶好,开始发车。

Title

Link

所属专栏

【方向盘】-Java EE

源代码

https://github.com/yourbatman/FXP-java-ee

程序员专用网盘公益上线啦,注册送1G超小容量,帮你实践做减法

https://wangpan.yourbatman.cn

Java开发软件包(Mac)

https://wangpan.yourbatman.cn/s/rEH0 提取码:javakit

女娲工程

http://152.136.106.14:8761

版本约定

[Java EE:6、7、8],[Jakarta EE:8、9、9.1]

📚前言

最近通过面试高密度的接触了不少Javaer,工作年限普遍在5-12年间,这个区间是大部分公司开发者的中坚力量,能够代表一定的技术主旋律。在交流过程中我夹带私货的大都问了类似“用过Java EE吗?Servlet和Java EE什么关系?了解JEP吗?”这样的问题,笔者将得到的所有回答浓缩总结成一句话:听过没用过

什么是Jakarta EE?它并非新技术,“前身”是你熟悉的Java EE,你可能表示没听过但绝对直接or间接的使用过。若是如此,建议先移步阅读本系列第一篇文章:从Java EE到Jakarta EE,企业版Java的发展历程

1998年,Sun公司发布JDK 1.2,并第一次启用J2EE这个名称,开始瞄准企业级开发规范;2004年,Sun公司发布JDK 5,并且启用Java EE这个名称,将J2EE改名为Java EE,从该版本开始Java EE不再像以前那样只注重大型商业系统的开发,而是更关注小到中小型系统的开发,简化这部分系统开发步骤,这得益于JDK的Annotation机制;2017年08月底(2017年8月,Java EE 8发布),Oracle宣布开源Java EE想让它变得更敏捷,并将项目移交给Eclipse基金会,至此Java EE改名为Jakarta EE。

2010年,IBM斥资65亿美金收购Sun未果,随后甲骨文74亿美金抢购成功!自此宣布Sun时代的结束,Java商标全归入Oracle旗下。随即Oracle马上对Google提起诉讼,告它使用Java API构建Android系统要求近90亿美金赔偿金,最终Google胜诉

然而Oracle本性尽显,本次交割得非常不痛快,提了很多要求,其中就包括不能继续使用Java EE这个名称,虽然看起来有点无理但Eclipse基金会还是接受了,毕竟一个名字而已关系貌似也没那么大,所以被迫改名为Jakarta EE了嘛。

如果你以为这样就结束了,就图样图森破,太“看不起”Oracle了。最要命的当属这个要求:不允许再使用javax命令空间。这意味着,Java EE 8将成为绝唱,彻底封版,后续版本不可能再向下兼容。换句话理解:使用可以,Eclipse基金会想在上面改代码,修复bug或者升级,休想!!!

看到这你是否不禁想c一句:Oracle你这是移交了个寂寞吗?作为开发者是否可以“团结起来”,咱不用Java EE了还不行吗?

✍正文

Oracle的一顿猛如虎操作,让开发者彻底失去了Java EE。Eclipse基金会则自立门户,另起炉灶开启Jakarta EE项目。

对于Jakarta EE,从它的官网https://jakarta.ee能看到Eclipse基金会接手后共发布过三个版本:

  • Jakarta EE 8:2019年9月发布,交接过来后发布的首个版本。特征总结为:
    • ①:内容完全同2017年8月发布的Java EE 8,无功能修改
    • ②:对GAV坐标做了变化,如老的javax.servlet:javax.servlet-api:4.01变更为jakarta.servlet:jakarta.servlet-api:4.02。这是本次版本升级的主要目的,把GAV坐标先扭过来
    • ③:命名空间依旧是javax,也就是说和Java EE 8是完全兼容的
  • Jakarta EE 9:2020年11月发布。这一次,是阻断式升级。特征总结为:
    • ①:GAV同Jakarta EE 8
    • ②:再无javax命名空间,而是全新的jakarta命名空间。如:javax.servlet.Servlet改为jakarta.servlet.Servlet
    • ③:所有EE技术大版本号均升1。如:Servet 4.01升为Servlet 5.0.0,用以告知开发者其向下不兼容性
  • Jakarta EE 9.1:2021年5月发布,增加JDK 11运行时支持。特征总结为:
    • ①:不新增API,保持和Jakarta EE 9一样
    • ②:基线版本(最低编译版本)依旧为JDK 8,但增加了JDK 11的运行环境
    • ③:相关技术的版本号基本没变化(只有少部分有小版本号+1情况)

总的来讲,若想升级到Jakarta EE 9+版本,麻烦还是较大的。作为开发者的我们,该何去何从呢?本文就来分析下这给开发者带来的转变,佐证笔者为何得出结论:开发者已无理由再用Java EE

升级到Jakarta EE有哪些转变

当然,这里指的是升级到Jakarta EE 9+版本。由于它是阻断式升级,盘点清楚哪些转变将非常重要。

✌名称

旧名称:Java EE;新名称:Jakarta EE。

除了对品牌有影响(毕竟是全新品牌嘛),对公司企业的影响不大,对开发者的影响也基本可忽略。

✌GAV坐标

这里以Maven的GAV坐标为例。

Java EE 8的GAV坐标:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-api</artifactId>
    <version>8.0.1</version>
</dependency>

Jakarta EE的GAV坐标:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<dependency>
    <groupId>jakarta.platform</groupId>
    <artifactId>jakarta.jakartaee-api</artifactId>
    <version>8.0.0</version>
</dependency>

解释一下,也许你从未导入过甚至都没见过这两个API,它就是Java EE/Jakarta EE技术的集大成者:一个API包含所有EE技术,如servlet、ejb、el、validation等等。

对它陌生是因为绝大多数真实使用场景下,开发者并不会在一个project里面用全这些技术,而是按需导入独立的API。

从截图可以看到Jakarta EE 8的命名空间依旧是javax.*,但就像上面所描述的,若仅停在Jakarta EE 8的话,那便岁月静好,一片和谐。但是,一旦升级到Jakarta EE 9+版本,景象就是这样子的:

顶层命名空间改变!这就是接下来要说的内容。

✌命名空间

如果说👆🏻两项转变对企业和开发者的影响微乎其微,那么命名空间的不兼容的影响将是巨大的,甚至致命的。这无异于直接是釜底抽薪呀,顶层包名都不一样了,所有模块均受到彻彻底底的影响。

命名空间不兼容的具体表现

“自古”以来不缺由于不向下兼容最终作死了的技术,那作为标准的Java企业级技术这次迎来这么大的阻断式升级,会有哪些具体表现呢?我们可以从下面这几个角度窥探一下

✌所有服务器需要重新编译

Java EE服务器类型众多,由于命名空间的变化,所有的服务器均需要重新编译、发版。如:

  • Eclipse的GlassFish:已适配。作为官方推荐的服务器,永远最先适配
  • Red Hat的WildFly:已适配。截止稿前已有preview版本适配了新命名空间
  • Oracle的WebLogic:未适配。
  • IBM的WebSphere:未适配。

下图列出了截止稿前,已对Jakarta EE 9新命名空间做了适配的服务器(若是Jakarta EE 8旧命名空间的话远不止这么多哦,证明不少服务器厂商还没行动呢):

Tips:你没看错,那个logo写着中文字的是2002年就已创办的中国公司:中创软件商用中间件股份有限公司

Tomcat呢???嗯,Tomcat并非Java EE容器,而只是一个Servlet容器(Web容器)而已,所以不可能出现在这个列表里。但Apache Tomcat实现了四个 Jakarta EE规范:

  1. Jakarta Servlet
  2. Jakarta Standard Tag Library(JSTL)
  3. Jakarta WebSocket
  4. Jakarta Authentication

Apache Tomcat作为全球使用最广泛(市占率超6成)的Web应用服务器,响应速度还是非常快的:

简而言之,Tomcat从10.x版本开始全面拥抱jakarta.*命名空间,9.x及以下版本用于保持对javax.*命名空间的支持。

✌企业自身代码修改

企业自己的project代码需要将import javax.*替换为import jakarta.*,修改并不复杂,看起来很简单实则不简单。

中大型企业的项目、服务成百上千个,你还会觉得简单吗?

有些代码承接着巨大的流量不能有半点闪失,虽说仅仅只是改了“不影响逻辑”的代码,但这带来的风险是企业必须付出更多的人力去规避的。

✌运维体系的修改

对于企业应用来讲,一般会保持定期升级应用服务器的习惯。但由于存在新服务器不兼容老的应用的问题,所以部署系统可能就需要两套,成倍的增加了运维的成本。另外,使用两套服务器的话,是否要缴纳双倍的费用给服务提供商呢?这也是个问题~

以上列出企业若要升级到新版Jakarta EE需要面临的至少三大难题,如若不能低成本的“破解”,你觉得还有升级的必要吗?

什么叫不用Java EE?

作为一个Java开发者,肯定听过Java EE这个名词,但大多数人都会回答没用过,我并不诧异,因为你大概率一直在使用Spring/Spring Boot。如果说用过Spring Boot就等于用过Java EE,我觉得太过于牵强了,就像总不能说每个开车的司机都用过内燃机、把玩过轮胎是一样的道理。

如今在诸如Spring Boot这样的框架包装下,应用层已经找不到Java EE的踪影了。所以“年轻的”面试者说没用过Java EE并不会让人觉得奇怪,毕竟在天朝互联网企业中Spring已然成为实际的开发标准,且在持续侵蚀着Java EE的市占率,拥抱Spring Boot开发已是大势所趋。

对于新一代开发者来讲,Java EE已经是古董级技术,随着Spring技术栈的普及,已经没有什么理由再去使用Java EE/Jakarta EE技术,面向Spring编程会更高效。

估摸Oracle也是看形势不对,索性就交出了Java EE顺带还混得个Eclipse基金会董事会席位,何乐而不为呢?但是,它不再让继续使用javax命名空间这行为实在太不讲武德了,这件事引起了众多开发者的反感。但,谁又惹得起呢,毕竟它乃是最擅长发律师函的Oracle呀!

Spring与Jakarta EE

Spring和Jakarta EE什么关系?

这个问题有点不太好回答,可以说它俩是竞争关系,也可以说Spring是基于Jakarta EE构建的;可以说Jakarta EE是企业级开发的 官方标准,也可以说Spring是企业级开发的实际标准。它俩浓情蜜意这么多年,早已不可分割,所以新的Jakarta EE要想得到更多的覆盖率,很重要的一点就是得看看Spring对它的支持程度,方可快速普及。

2021年9月1日,一年一度的Spring One大会在线上举行,Spring项目拥有者Pivotal公司发布了Spring Framework 6.0以及Spring Boot 3.0的RaodMap,最重磅的变化莫过于这两个

  1. 基于Java 17。话外音:不再支持Java 8、Java 11
  2. 基于Jakarta EE 9。话外音:不再支持Java EE,不再支持javax命名空间

以Spring现在的影响力和能力,笔者觉得它完全有能力自立门户,不带Jakarta EE一起玩了。但是Spring一直秉持着不重复造轮子的理念,成长于社区反哺于社区,一起维护更好的生态环境,这不就是对Java开发者最大的“负责”么。

对于开发者而言,只需保持对Spring/Spring Boot的热度即可,至于Jakarta EE的发展、迭代,就让它“沦落为”汽车的发动机吧,无需关注。

Tips:即使不是Spring框架,普通开发者(如果你不甘只做普通开发者,就…)也不会回到需要关心Java EE/Jakarta EE的年代,所以dark不必担心

✍总结

虽然Oracle不讲武德的操作,一度让开发者非常的失望和愤怒。但随着Spring的官宣:“带着”Jakarta EE继续前行,Javaer重拾信心,稳步前行。

历史的巨轮,浩浩荡荡的前进。有些是必然的趋势,即使你现在还并不能接受,但这并不妨碍。Java 8再怎么坚挺,终究会迎来其生命的终点,这是不可阻挡的,比较人类需要进步,技术也是。

去Tomcat官网可以看到,它竟提供了应用进行自动代码转换以支持jakarta的工具。或许在不远的将来我们可以看到各种奇yin巧技去搞兼容,又见那乌烟瘴气的一幕。

本专栏上下文

推荐阅读

我是方向盘(YourBatman):前25年不会写Hallo World、早已毕业的大龄程序员。高中时期《梦幻西游》骨灰玩家,网瘾失足、清考、延期毕业、房产中介、保险销售、送外卖…是我不可抹灭的黑标签

  • 🎓2013.07 清考、毕业答辩3次未通过、延期毕业
  • 🏷2013.08-2014.07 宁夏中介公司卖二手房1年,毕业后第1份工作
  • ️️🏷2014.07-2015.05 荆州/武汉,泰康人寿卖保险3月、饿了么送外卖2月,还有炸鸡排、直销等第2345份工作
  • 🏷2015.08 开始从事Java开发,闯过外包,呆过大厂!擅长抽象思维,任基础架构团队负责人
  • 🏷2021.08 因“双减政策”失业!历经9面,终获美团外卖L8的offer
  • 🙅🏻‍♀️Java架构师、Spring开源贡献者、CSDN博客之星年度Top 10、领域建模专家、写作大赛1/2届评委
  • 📚高质量代码、规范践行者;DDD领域驱动深度实践;即将出版书籍《Spring奇淫巧技》

序号

专栏名称

简介

01

【方向盘】-程序人生

程序人生,人生程序

02

【方向盘】-资讯/新特性

IDEA、JDK、Spring技术栈…新特性

03

【方向盘】-IntelliJ IDEA

熟练使用IDEA就相当拥有物理外挂,助你高效编码

04

【方向盘】-Bean Validation

熟练掌握数据校验,减少90%的垃圾代码

05

【方向盘】-日期时间

帮你解决JDK Date、JSR 310日期/其实 的一切问题

06

【方向盘】-Spring类型转换

Spring类型转换-框架设计的基石

07

【方向盘】-Spring static

static关键字在Spring里的应用

08

【方向盘】-Cors跨域

关于跨域请求问题,本专栏足矣

09

【方向盘】-Jackson

Almost Maybe是最好的Jackson专栏

10

【方向盘】-Spring配置类

专讲@Configuration配置类,你懂的

11

【方向盘】-Spring技术栈

暂无所属小分类的,Spring技术栈大分类

12

【方向盘】-JDK

暂无所属小分类的,JDK技术栈大分类

13

【方向盘】-Servlet

Servlet规范、Web相关内容专题

14

【方向盘】-Java EE

从Java EE到Jakarta EE,30年弹指一挥间

15

【方向盘】-工具/提效

开发工具、软件工具,目标是提效

16

【方向盘】-Spring技术栈新特性

Spring Framework、Spring Boot、Spring Cloud、Spring其它技术

17

【方向盘】-基本功

每个Javaer,都需要有扎实的基本功

99

源代码库

大多数专栏均配有源代码,都在这里

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-07-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
架构师的道法术:架构师是否需要下场写代码?
前几天,我在社区抛出了一个问题 (在此),没想到获得了众多架构师的热烈讨论与回应。在认真阅读了大家的解答后,我也陷入了深思:在技术日新月异的今天,架构师的角色早已超越了画架构图和撰写文档的传统范畴。随着软件开发的复杂性与日俱增,架构师的职责正在发生深刻变化。而一个备受争议的话题始终萦绕在行业中:架构师究竟是否需要下场写代码?
不惑
2024/12/27
1460
架构师的道法术:架构师是否需要下场写代码?
为何架构设计对软件开发至关重要
在任何领域,事前的准备和规划都是成功的关键,正如那句古话所说:“预则立,不预则废。”在软件开发这一高度复杂且变化迅速的行业中,这一点尤为重要。
参谋带个长
2024/12/06
1750
架构师的职责是什么?
在当今时代,随着信息技术的不断发展,各种软件系统和应用程序变得越来越复杂,其架构设计和开发难度也越来越大。因此,架构师的作用和重要性也越来越受到关注。架构师是一个拥有丰富经验和广泛技术视野的高级职位,主要负责设计、构建和维护各种软件系统的架构,以满足业务需求和技术要求,同时为公司提供技术支持和解决方案。
coderidea
2023/05/17
1.8K0
架构师的职责是什么?
架构与架构师
“架构”这个词给人的直观感受就充满了权力与神秘感,因此谈论架构总让人有一种正在进行责任重大的决策或者深度技术分析的感觉。毕竟,进阶到软件架构这一层次是我们走技术路线的人的终极目标
码农戏码
2021/03/23
5770
业务架构师、系统架构师、软件架构师:职责、技能要求及对比分析
业务架构师、系统架构师和软件架构师在企业技术层面扮演着不同角色,各自有其独特的职责和技能要求。了解和明确这三者的不同,有助于组织有效地分配资源和角色,促进企业的技术和业务目标的实现。
运维开发王义杰
2023/08/10
3.5K0
业务架构师、系统架构师、软件架构师:职责、技能要求及对比分析
12种常见的软件架构风格,架构师必备
软件架构是定义软件系统的高级结构和组织的过程。它涉及识别和选择正确的组件,决定它们之间如何交互,以及确定它们应该如何组织以实现特定的目标。软件架构的目标是创建一个可维护、可扩展和安全的系统,能够满足用户和组织的需求。
程序新视界
2023/12/02
3.2K0
12种常见的软件架构风格,架构师必备
如何成为一名优秀的架构师?
想一下软件架构的评审过程:一位架构师参与进来,俯视一切然后指指点点,高谈阔论。他发表的评论要么过于粗浅,要么严重脱离实际。
Spark学习技巧
2018/11/08
1.3K0
【愚公系列】软考高级-架构设计师 109-软件架构演化原则
软件架构演化原则是指在软件架构设计和演化过程中应该遵循的一些指导性原则和规范,以确保软件系统在不断变化和迭代的过程中保持稳健、可维护和可扩展。
愚公搬代码
2024/08/15
2090
浅谈软件架构师的素质与职责
最近开始学习如何成为一名合格的架构师。首先参照别人的观点,在结合自己的实际经验,写出自己对如何成为一名架构师的理解,希望大家热心于与援手,能够指点一二. 沟通能力和自我表达 我认为沟通能力是基本中的基本,最为重要,最为普遍的素质。技术人员好像容易忽略,想成为架构师就不能忽略。因为架构师要做的第一件事就是与团队成员、项目经理、客户认同沟通,获得认同。我知道,这对于现在做技术,以后想转做架构的人也许很难.对本人也是如此。也许 你会注意到虽然你兢兢业业,老黄牛的做了很多事,但每次升迁的总是那些平时最活跃的人。抛除
张善友
2018/01/30
6790
资深架构师十年总结:成为架构师,你必须具备这五点能力
作者 | Alan Tai 译者 | 冬雨 策划 | 闫园园 在过去的 20 年里,作为一名软件工程师和软件架构师,我与不同领域和不同学科的软件工程师聊过很多次。他们中有一些人是有着 8 到 10 年经验的高级工程师,有许多人还在职业生涯早期,有着 3 到 5 年的经验。其中一些人是我的同事。有些人是求职者。聊到最后,他们几乎都会问到同样一个问题: “我想成为一名解决方案架构师。了解更多架构相关内容的资源有哪些?“——很多软件工程师都会问的一个问题。 他们问错了问题。如果你读下去,就会知道为什么我
深度学习与Python
2023/03/29
5910
资深架构师十年总结:成为架构师,你必须具备这五点能力
浅谈一下编程思想(二)软件架构
浅谈一下编程思想(一) - 掘金 前面写了编程范式与设计原则,这次写一下软件架构。
Coder昊白
2023/11/22
3130
如何成为一名优秀的架构师
同时期进入到同一间公司,参与同一个项目的同学,时间长了之后,有同学的架构能力很强,有的却还像一个新手,造成这种差别的原因除了个体素质的差异,还有一个是工作方式和思考方式上的差异。
路人甲Java
2019/12/11
4210
软件架构与系统架构:区别与联系的分析
引言: 在信息技术领域,软件架构和系统架构这两个术语经常被提及。尽管它们在某些方面有重叠,但它们确实代表了不同的概念和聚焦点。理解这两种架构之间的区别和联系对于任何从事技术开发和设计的专业人士都是至关重要的。本文旨在深入探讨软件架构与系统架构的定义、差异以及它们之间的相互关系。
运维开发王义杰
2024/02/04
8530
软件架构与系统架构:区别与联系的分析
成为java架构师需要具备那些技能?
大家好,又见面了,我是你们的朋友全栈君。架构师定义 百度百科,系统架构师是一个既需要掌控整体又需要洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导型人物。 架构师工作职能 软件架构师在整个软件开发过程中都起着重要的作用,并随着开发进程的推进而其职责或关注点不断地变化,在需求阶段,软件架构师主要负责理解和管理非功能性系统需求,比如软件的可维护性、性能、复用性、可靠性、有效性和可测试性等等,此外,架构师还要经常审查客户及市场人员所提出的需求,确认开发团队所提出的设计;在需求越来越明确后,架构师的关注点开始转移到组织开发团队成员和开发过程定义上;在软件设计阶段,架构师负责对整个软件体系结构、关键构件、接口和开发政策的设计;在编码阶段,架构师则成为详细设计者和代码编写者的顾问,并且经常性地要举行一些技术研讨会、技术培训班等;随着软件开始测试、集成和交付,集成和测试支持将成为软件架构师的工作重点;在软件维护开始时,软件架构师就开始为下一版本的产品是否应该增加新的功能模块进行决策。 成为java架构师所需要具备那些技能? 所谓架构师,思考的是全局的东西,是如何组织你的系统,以达到业务要求,性能要求,具备可扩展性(scalability),可拓展性(extendability),前后兼容性等。可能涉及到的东西包括了从硬件到软件的方方面面,实在是一言难尽。 既然java架构师,首先你要是一个高级java攻狮城,熟练使用各种框架,并知道它们实现的原理。jvm虚拟机原理、调优,懂得jvm能让你写出性能更好的代码;池技术,什么对象池,连接池,线程池…:;java反射技术,写框架必备的技术,但是有严重的性能问题,替代方案java字节码技术;nio,没什么好说的,值得注意的是”直接内存”的特点,使用场景;java多线程同步异步;java各种集合对象的实现原理,了解这些可以让你在解决问题时选择合适的数据结构,高效的解决问题,比如hashmap的实现原理,好多五年以上经验的人都弄不清楚,还有为什扩容时有性能问题?不弄清楚这些原理,就写不出高效的代码,还会认为自己做的很对;总之一句话越基础的东西越重要,很多人认为自己会用它们写代码了,其实仅仅是知道如何调用api而已,离会用还差的远。 熟练使用各种数据结构和算法,数组、哈希、链表、排序树…,一句话要么是时间换空间要么是空间换时间,这里展开可以说一大堆,需要有一定的应用经验,用于解决各种性能或业务上的问题。 熟练使用linux操作系统,必备,没什么好说的。 熟悉tcp协议,创建连接三次握手和断开连接四次握手的整个过程,不了解的话,无法对高并发网络应用做优化;熟悉http协议,尤其是http头,我发现好多工作五年以上的都弄不清session和cookie的生命周期以及它们之间的关联。 系统集群、负载均衡、反向代理、动静分离,网站静态化。 分布式存储系统nfs,fastdfs,tfs,Hadoop了解他们的优缺点,适用场景。 分布式缓存技术memcached,redis,提高系统性能必备,一句话,把硬盘上的内容放到内存里来提速,顺便提个算法一致性hash。 工具nginx必备技能超级好用,高性能,基本不会挂掉的服务器,功能多多,解决各种问题。 数据库的设计能力,mysql必备,最基础的数据库工具,免费好用,对它基本的参数优化,慢查询日志分析,主从复制的配置,至少要成为半个mysqldba。其他nosql数据库如mongodb。 还有队列中间件。如消息推送,可以先把消息写入数据库,推送放队列服务器上,由推送服务器去队列获取处理,这样就可以将消息放数据库和队列里后直接给用户反馈,推送过程则由推送服务器和队列服务器完成,好处异步处理、缓解服务器压力,解藕系统。 想成为架构师不是懂了一大堆技术就可以了,这些是解决问题的基础、是工具,不懂这些怎么去提解决方案呢?这是成为架构师的必要条件。 架构师还要针对业务特点、系统的性能要求提出能解决问题成本最低的设计方案才合格,人家一个几百人用户的系统,访问量不大,数据量小,你给人家上集群、上分布式存储、上高端服务器,为了架构而架构,这是最扯淡的,架构师的作用就是第一满足业务需求,第二最低的硬件网络成本和技术维护成本。 架构师还要根据业务发展阶段,提前预见发展到下一个阶段系统架构的解决方案,并且设计当前架构时将架构的升级扩展考虑进去,做到易于升级;否则等系统瓶颈来了,出问题了再去出方案,或现有架构无法扩展直接扔掉重做,或扩展麻烦问题一大堆,这会对企业造成损失。
全栈程序员站长
2022/09/08
3780
软件架构可能不是你想象的那个样子
软件架构在敏捷社区中存在争议。在许多人的经验中,架构只会导致毫无价值的会议和无关紧要的文件,“地图不是领土”的说法可以恰当地概括这一观点。然而,架构不佳的应用程序很快就会变得像被遗弃在路边的车辆一样,破损且无法修复。那么,在毫无意义的两极之间是否有一个有用的中间地带呢?
深度学习与Python
2022/06/11
3020
软件架构可能不是你想象的那个样子
架构设计深入学习01--概论与预架构阶段
完成一个比较复杂的项目后,终于有空看看书了,这次决定将架构设计的方法论进行一次系统的学习,借助温昱大师的《一线架构师》一书。我将把这次学习分成三部分,分别是概论&预架构阶段&非功能目标的方法论、概念架
用户1216676
2018/01/24
9570
软件架构发展历程分享
架构的形式与特点 设计文档和代码 我们一般说的架构既包括架构的设计过程,也包括设计的产出物,一般可以包括各类设计文档、设计图,也可以包括一些技术验证代码、Demo 或者其他相关程序。文档的目的在于准确记录我们的思维产物,在软件尚未实现时,作为指导蓝图,尽量精确的描述清楚软件。 在软件的实现过程中,可能随时随着我们的深入研究,根据具体情况对文档做出局部的一些调整和修改。文档作为结项或交接的一部分,也是整个软件项目的产出物的一部分,成为公司 IT 资产的有机组成部分。 架构服务于业务 正如19世纪的伟大建筑
CSDN技术头条
2018/04/18
1.4K0
【愚公系列】软考高级-架构设计师 097-基于架构的软件开发(ABSD)
基于架构的软件开发(Architecturally Based Software Development,ABSD)是一种软件开发方法,它强调在整个软件开发过程中对软件体系结构的重视和管理。ABSD 的主要作用包括:
愚公搬代码
2024/08/09
4240
系统架构设计师|关于系统架构设计师(下)
本篇为系统架构设计师的第二篇,主要说说何为系统架构设计师,他与系统架构之间的关系以及如何成为系统架构设计师,如有描述不清,还望指出。
六月暴雪飞梨花
2024/08/20
8230
系统架构设计师|关于系统架构设计师(下)
【愚公系列】软考高级-架构设计师 092-系统架构设计概述
系统架构设计是指在软件工程、信息系统、计算机系统等领域中,定义系统的高层结构和组织方式的过程。系统架构设计的目的是确保系统满足业务需求、性能要求、可维护性和扩展性等方面的需求,同时提供一个清晰的蓝图,指导系统的详细设计和实现。
愚公搬代码
2024/08/06
2440
推荐阅读
相关推荐
架构师的道法术:架构师是否需要下场写代码?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验