离职已有好几个月,准备写一篇关于之前在腾讯做Java开发的经历,现在来谈谈在Java领域里,在腾讯做Java开发的体验。随便写写别较真。

首先,介绍一下腾讯里与Java相关的部门。主要有CDG(云与智慧产业事业群)中的腾讯广告和FIT(金融科技事业群)理财通。其他部门则包括TEG中的一些大数据部门,以及IEG中的大数据相关团队。在腾讯,大部分Java工作都是与大数据相关的,因此在腾讯写代码的项目通常B2B或大数据相关的业务,其他类型项目较少。

一、Spring Boot

接下来谈谈在腾讯的一些开发工具。首先,在框架方面,大部分项目仍然使用Spring Boot,也有一些项目选择不知名的框架,曾经看到过使用Grizzly(号称高性能目前已过时)的项目,然后加了Spring Boot变成了大杂烩,可能是因为晋升有东西可讲吧。

还有一些历史较悠久的项目,各种奇怪的框架都有存在。关于JDK,绝大多数项目使用的版本各异,某些项目甚至源自十几或二十年前,可能会基于JDK1.8,更新的则普遍使用JDK 17,具体还是看各个部门的选择。一些ToB业务由于需要迁移到云端,使用了腾讯云的微服务框架TSF,没用过不评价吧。

二、中间件、服务发现、网关等

中间件其实都是以来腾讯云,有些BG会二次封装一下,基本也都是Kafka、Mysql、Elasticsearch、Redis这些,二次改装后可能交Tendis,TKafka,TDSQL之类的,是不是很好奇都加了个T,之前有人在脉脉调侃会不会出个TDeepSeek哈哈哈。

在服务发现方面早期的有Taf,搭配nginx实现微服务框架,同时提供服务发现功能。令人惊讶的是,这些技术已经存在十几、二十年了,由于历史原因,也不敢动,不得不持续使用。内部大部分使用北极星(即在GitHub上开源的Polaris)。也存在一些较老的网关,名字记不太清了。

RPC的话,内部频繁提到的是TRPC,这是一种类似于开源gRPC的框架。TRPC是基于TAF演变而来,是专为RPC设计的框架。公司为了推广这一框架,已成功在不少项目中应用。然而,TOB业务使用这一框架的情况较少,大部分仍使用SpringCloud框架,尤其是Spring Cloud。我个人觉得,灵活性是最佳策略,绝大多数项目选择Spring Boot。如果整合Kubernetes(k8s),再加上北极星网关,这样基本能够满足大部分业务需求。内部主要还是看团队的工具为主,基本每个BG都在搞自己的paas相关服务,比如tkex、天机阁,各种名字都有。

ToB的业务可能比较惨,一边公司要求必须使用公司组件,一边客户要求不能使用鹅厂内部的东西,有时就得准备两套应对。。。

三、大数据

内部也是封装了spark、flink这些,有的叫taiji、有的叫洛子(us),现在不知道啥情况了,迭代很慢,spark on k8s这个天然适合调度的,不知道现在集成情况怎么样了。ui的话,感觉洛子交互更加友好(个人感觉哈),任务之间拉条线就能上下依赖,外面也有海豚apache dolphinscheduler类似的。虽然整体大数据平时吐槽会有点老旧,好像外面的集成更差一点哈哈。

四、监控

在监控方面,各种工具层出不穷。早期有秒级监控,还有天机阁。内部主流的监控产品是孵化出来的,其次有资源监控功能。确实有一些会议类似Prometheus的开源项目,资源监控的实现相对困难,设计上存在一些冗杂的环节。当一个服务不属于任何具体服务时,必须依赖于Agent(这可能指某种特定的日志或监控工具)来收集日志或监控数据。个人觉得这种设计有点奇葩,不知道怎么想的,部署一个服务还得配置考虑怎么配置日志、监控相关的agent。

早期的秒级监控确实良好,并配有成熟的告警机制,但之后维护减少。我推测,监控逐渐被当作数据库使用,因为多维度相乘的成本相当高,最终的成本由业务自行承担,跨越发展时期的项目因无法承受过高的成本而被迫退出。许多项目在无奈的情况下,选择继续迁移至资源监控,导致监控的使用过程中显得相当不合理。

此外,也了解到一些部门使用Prometheus,外部生态的确较好,不过Prometheus在腾讯内部使用较少。关于PaaS服务,公司内部有很多平台,主流的是腾讯云及PCG的007平台,还有TEG的TKEX。内部孵化的平台较多,同时保留了一些早期云平台的遗留产物,毕竟是在云原生技术成熟之前形成的。

由于历史原因,维护这些老旧服务的工作极具挑战性,始终难以去除(这可能指这些古老服务一直以来存在且难以消除的现状),业务方面的调整往往比较谨慎。不同产品线的输出中,也有CICD(持续集成/持续部署)相关的工具。确实存在许多优秀的CICD工具,以蓝鲸平台为主,还有一些收购的公司如Coding等,提供多样化的CICD工具。

五、职场那点事-有人的地方就有江湖。

腾讯主要还是以C++、Go为主,做为Java在里面的位置可想而知。10位组长中大约有4位曾经负责C++和PHP开发,另1位可能来自算法研究,剩余5位才是Java相关的。所以和组长的沟通中,就显得非常重要,比如周会说下进度的时候,有的人就简单两三句说完了,有的人就会把很简单的事情说的很复杂,甚至还把别人的成果也说了进去,那么在组长眼里,你做的事情太简单了,别人做的事情更有成果。当然了,大厂还是主要看组,每个组的氛围都不同,也跟组织架构有关,有时候每半年换个总监,每次换领导之前的项目就没有意义了,每个领导的想法不同吧。整体而言,外面也一样,都是看运气和个人如何面对吧。

六、总结

滨海里的夕阳很好看

在鹅厂做java开发是什么体验的更多相关文章

  1. 所有做java开发的都是些垃圾

    所有做java开发的都是些垃圾,再垃圾的框架,只要有人用,对java程序员来说那就是高性能,高可用,解耦的,非常优秀的一款框架.属于吃屎都吃的津津有味.java里的框架都是垃圾,连一个不错的都没有.比 ...

  2. java突破------一撸到底(做Java开发,遇到瓶颈是保持现状还是寻求突破?)

    java突破------一撸到底(做Java开发,遇到瓶颈是保持现状还是寻求突破?) 很多人做Java开发2.3年之后,都会觉得自己遇到了瓶颈.什么都会又什么都不会,如何改变困境,为什么很多人写了7. ...

  3. 使用Eclipse-Maven-git做Java开发(3)--Eclipse的安装和配

    使用Eclipse-Maven-git做Java开发(3)--Eclipse的安装和配 https://my.oschina.net/songxinqiang/blog/474530

  4. 大学同学做Java开发比我多5K,八年老Android只会crud该转Java吗?

    最近在网上看到这样一个帖子: 做了八年Android开发,感觉这块做着也挺没意思,日常工作就是做一些架构优化,质量数据监控,改一改构建脚本,最主要的是业务负责人没有一个是做客户端的,都是后端的人. 最 ...

  5. 面试总结:鹅厂Linux后台开发面试笔试C++知识点参考笔记

    文章每周持续更新,各位的「三连」是对我最大的肯定.可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇) 文章是由自己笔试面试腾讯的笔记整理而来,整理的时候又回顾了一遍,中间工 ...

  6. 转载:做Java开发这一年 (火龙果软件)

    转载:http://www.uml.org.cn/success/201410205.asp 从去年到现在,从.NET转向Java开发(只是因为项目原因,绝对与平台好坏没有关系)差不多有一年的时间了. ...

  7. 一个老牌程序员说:做Java开发,怎么可以不会这 20 种类库和 API

  8. 为什么做java开发的公司需要那么多程序员?

    注:文章转载自知乎 透过现象看本质. Java是企业应用市场的王者,如果一家非互联网公司用Java,那么十有八九是做企业应用的. 所以,这个问题本质上是:为什么做企业应用的公司需要那么多Java程序员 ...

  9. 做JAVA开发的同学一定遇到过的爆表问题,看这里解决

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由净地发表于云+社区专栏 记一次Java线上服务器CPU过载问题的排查过程,详解排查过程中用到的Java性能监测工具:jvisualvm ...

  10. 做Java开发7年,今年9个月时间圆梦饿了么P7

    前言 工作拧螺丝,面试造火箭.我想这是每个程序员比较头疼的事情吧!但是,又必须要经历一个面试流程,尤其是摸不清面试官问的问题,导致面试的时候不知道如何回答.本文是工作7年Java程序员从几十次面试中挑 ...

随机推荐

  1. Qt编写可视化大屏电子看板系统19-横向柱状图

    一.前言 横向柱状图的绘制这玩意当初还着实花费了一些时间,因为从v1版本开始,默认XY坐标轴是没有交换位置的处理的,也只有垂直的柱状图,要想换成横向的柱状图必须是自己拿到数据重新绘制,数据值的设置一般 ...

  2. Qt音视频开发37-USB摄像头解码ffmpeg方案

    一.前言 用ffmpeg来处理USB摄像头,是前段时间研究视频监控ffmpeg内核的时候搞定的,既然ffmpeg这么牛逼的库可以解析各种音视频,我想处理个本地USB摄像头应该也不是什么难事,果真搜索也 ...

  3. yarn : 无法加载文件 C:\Users\duany\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁止运行脚本

    在win10 下安装yarn后,在编辑器中检查yarn的安装的时候会出现: 解决方法 1:搜索powershell,以管理员方式运行powershell2:使用命令更改计算机的执行策略 执行: set ...

  4. Ant入门简单实例

    一.构建ant环境 要使用ant首先要构建一个ant环境,步骤很简单: 1) 安装jdk,设置JAVA_HOME ,PATH ,CLASS_PATH(这些应该是看这篇文章的人应该知道的) 2) 下载a ...

  5. 不为人知的网络编程(十九):能Ping通,TCP就一定能连接和通信吗?

    本文由小白debug分享,原题"能 ping 通,TCP 就一定能连通吗?",下文进行了排版和内容优化. 1.引言 平时,我们想要知道,自己的机器到目的机器之间,网络通不通,一般会 ...

  6. 给 Python 添加进度条 | 给小白的 tqdm 精炼实例!

    给 Python 添加进度条 | 给小白的 tqdm 精炼实例! 假设我们有一个循环: for i in range(100): do_something() # 这里做某些事 假设 do_somet ...

  7. 禁用Windows服务器iis错误导致启动vs调试

    问题描述: IIS站点错误会导致windows服务器启动vs调试,这在生产服务器是完全没必要的,会导致下面的问题,弹出一个调试框,必须手动关闭.很是不爽.. 关闭调试导入注册表: Windows Re ...

  8. Unity TheHeretic Gawain Demo 异教徒Demo技术学习

    <异教徒 Heretic>是Unity在2019年GDC大会上展示的一款技术Demo,部分资源于2020年中旬公开下载. 这款Demo主要用于展示Unity在数字人技术领域的最新进展,尤其 ...

  9. 《深入理解Mybatis原理》MyBatis的sqlSession执行流程

    sqlSessionFactory 与 SqlSession 正如其名,Sqlsession对应着一次数据库会话.由于数据库会话不是永久的,因此Sqlsession的生命周期也不应该是永久的,相反,在 ...

  10. Centos-基础配置

    切换下载源到阿里云 备份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 下载新的 Cent ...