在鹅厂做java开发是什么体验
离职已有好几个月,准备写一篇关于之前在腾讯做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开发是什么体验的更多相关文章
- 所有做java开发的都是些垃圾
所有做java开发的都是些垃圾,再垃圾的框架,只要有人用,对java程序员来说那就是高性能,高可用,解耦的,非常优秀的一款框架.属于吃屎都吃的津津有味.java里的框架都是垃圾,连一个不错的都没有.比 ...
- java突破------一撸到底(做Java开发,遇到瓶颈是保持现状还是寻求突破?)
java突破------一撸到底(做Java开发,遇到瓶颈是保持现状还是寻求突破?) 很多人做Java开发2.3年之后,都会觉得自己遇到了瓶颈.什么都会又什么都不会,如何改变困境,为什么很多人写了7. ...
- 使用Eclipse-Maven-git做Java开发(3)--Eclipse的安装和配
使用Eclipse-Maven-git做Java开发(3)--Eclipse的安装和配 https://my.oschina.net/songxinqiang/blog/474530
- 大学同学做Java开发比我多5K,八年老Android只会crud该转Java吗?
最近在网上看到这样一个帖子: 做了八年Android开发,感觉这块做着也挺没意思,日常工作就是做一些架构优化,质量数据监控,改一改构建脚本,最主要的是业务负责人没有一个是做客户端的,都是后端的人. 最 ...
- 面试总结:鹅厂Linux后台开发面试笔试C++知识点参考笔记
文章每周持续更新,各位的「三连」是对我最大的肯定.可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇) 文章是由自己笔试面试腾讯的笔记整理而来,整理的时候又回顾了一遍,中间工 ...
- 转载:做Java开发这一年 (火龙果软件)
转载:http://www.uml.org.cn/success/201410205.asp 从去年到现在,从.NET转向Java开发(只是因为项目原因,绝对与平台好坏没有关系)差不多有一年的时间了. ...
- 一个老牌程序员说:做Java开发,怎么可以不会这 20 种类库和 API
- 为什么做java开发的公司需要那么多程序员?
注:文章转载自知乎 透过现象看本质. Java是企业应用市场的王者,如果一家非互联网公司用Java,那么十有八九是做企业应用的. 所以,这个问题本质上是:为什么做企业应用的公司需要那么多Java程序员 ...
- 做JAVA开发的同学一定遇到过的爆表问题,看这里解决
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由净地发表于云+社区专栏 记一次Java线上服务器CPU过载问题的排查过程,详解排查过程中用到的Java性能监测工具:jvisualvm ...
- 做Java开发7年,今年9个月时间圆梦饿了么P7
前言 工作拧螺丝,面试造火箭.我想这是每个程序员比较头疼的事情吧!但是,又必须要经历一个面试流程,尤其是摸不清面试官问的问题,导致面试的时候不知道如何回答.本文是工作7年Java程序员从几十次面试中挑 ...
随机推荐
- vue使用less 有报错(loaderContext.getResolve is not a function)
1.安装less npm install less-loader --save 2.main.js 引入 import less from 'less' Vue.use(less) warning:如 ...
- Qt编写机器码秘钥控制/日期防篡改/离线使用/硬件标识/运行时间/数量控制/批量更新秘钥
一.前言说明 搞软件开发一直追求精益求精的目标,从第一版的秘钥生成器到今天这个版本,经历了十年的时间,最初的版本做的非常简陋,就是搞了个异或加密,控制运行时间,后面又增加设备数量的控制,然后就是到期时 ...
- Qt编写安防视频监控系统21-摄像机管理
一.前言 摄像机管理在整个系统中是数据库部分最核心的,只有添加了摄像机信息,才能进行加载,生成树状列表等,摄像机表信息的字段内容改过好几次,有可能后期还需要修改,目前摄像机表信息主要包括摄像机编号.摄 ...
- Qt音视频开发4-vlc读取和控制
一.前言 vlc本身是个全功能的很牛逼的播放器,你能够想到的播放的功能他都有,比如获取视频文件的长度.唱片的封面.当前播放进度.设置播放进度.声音控制.静音控制等,这些vlc都给你封装好了,你直接调用 ...
- vue.js中vue.config.js的配置说明
如果你的项目没有vue.config.js,请在根目录新建一个. vue.config.js里面的代码如下: module.exports = { /** 区分打包环境与开发环境 * process. ...
- kubernetes系列(五) - kubernetes网络原理
目录 前言 1. kubernetes网络模型 2. kubernetes的组件之间如何通讯 2.1 同一个pod内的多容器之间 2.2 各个pod直接的通讯 2.2.1 同一个节点上的pod互相通讯 ...
- datahub 采集oracle数据 DPI-1047: Cannot locate a 64-bit Oracle Client library: libclntsh.so
datahub 命令行采集oracle 报错如下: datahub ingest -c oracle.yml sqlalchemy.exc.DatabaseError: (cx_Oracle.Data ...
- Centos-基础配置
切换下载源到阿里云 备份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 下载新的 Cent ...
- Solution Set - “也许我们早已经共鸣在那约定之地”
目录 0.「AGC 024D」Isomorphism Freak 1.「APIO 2018」「洛谷 P4631」选圆圈 2.「UR #2」「UOJ #31」猪猪侠再战括号序列 3.「UR #3」「UO ...
- CDS标准视图:功能位置信息 I_FunctionalLocationData
视图名称:I_FunctionalLocationData 视图类型:基础视图 视图代码: 点击查看代码 @EndUserText.label: 'Functional Location Data' ...