找回密码
 立即注册
搜索
查看: 2650|回复: 33

[求助] 请问用java微服务处理数据库请求,相比c++用什么优点?

[复制链接]
     
发表于 2024-6-24 17:08 来自手机 | 显示全部楼层 |阅读模式
本帖最后由 闪雷可达鸭 于 2024-6-24 17:16 编辑

之前,在github上找了一个项目学习,是python+c+++java糅合的,和公司的项目类似。
我主要会c++。
这个项目的python用的很简单,也能照着写。
就是java比较麻烦,而且我也没java的开发环境。
不过,我是有些疑惑的,python是胶水语言用于粘合调用与被调用其他语言可以理解,但是为什么作者使用java微服务而不是c++来控制数据库?
是不是因为c++对处理多线程高并发数据库的操作对程序员个人水平要求比较高。
而java的那些组件什么mybatis ,能替人处理头痛的问题?

回复

使用道具 举报

     
发表于 2024-6-24 17:10 | 显示全部楼层
是因为会处理一些HTTP请求JAVA有优势一些吧
回复

使用道具 举报

头像被屏蔽
     
发表于 2024-6-24 17:11 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2024-6-24 17:11 | 显示全部楼层
好写 &  微服务那套生态完备

spring 那一套整起来,比 cpp 方便多了

你不是熟手所以会头疼环境问题
回复

使用道具 举报

     
发表于 2024-6-24 17:13 | 显示全部楼层
这种服务的瓶颈在 IO,用什么语言开发都差不多的,Java 比较容易招到人
回复

使用道具 举报

     
发表于 2024-6-24 17:13 | 显示全部楼层
环境只要搭好一次就好了
java 开发效率高
回复

使用道具 举报

     
 楼主| 发表于 2024-6-24 17:13 来自手机 | 显示全部楼层
lucifer123 发表于 2024-6-24 17:10
是因为会处理一些HTTP请求JAVA有优势一些吧

是http请求啊?
这个我没想到。
之前用C++的libcurl库处理http请求。
回复

使用道具 举报

     
发表于 2024-6-24 17:14 | 显示全部楼层
花江夏樹 发表于 2024-6-24 17:13
这种服务的瓶颈在 IO,用什么语言开发都差不多的,Java 比较容易招到人

也可以说不靠谱的人来写java,你也不用太害怕
回复

使用道具 举报

     
发表于 2024-6-24 17:14 | 显示全部楼层
数据库基本都提供JDBC接口甚至Python的,C++接口则未必提供或者提供的接口不好用。我们有个项目就遇到了hive、hbase难以用C++接口访问。
回复

使用道具 举报

     
发表于 2024-6-24 17:35 来自手机 | 显示全部楼层
本帖最后由 tokamak 于 2024-6-24 17:41 编辑

最大的原因应该是java有杀手级的web框架。
java的虚拟线程来得很晚,但是也不是什么了不得的硬伤。

另一个原因应该是因为java本身简单吧,反正像我这种智力的人没学懂c++,但能搞懂java......
回复

使用道具 举报

     
发表于 2024-6-24 17:40 来自手机 | 显示全部楼层
java的好处是第三方库多,方案一个体系下很成熟。c++太灵活了,很多人太喜欢自己造轮子了,另外第三方库要么不好引入,要么质量不高,要么体量太大。
回复

使用道具 举报

     
发表于 2024-6-24 17:46 | 显示全部楼层
搞java,性能和开销过得去就行了,别把cpp追求极致性能的习惯带进去就好,原则上少造轮子,尽可能找成熟的实现方案。
回复

使用道具 举报

发表于 2024-6-24 17:49 | 显示全部楼层
C++太难用了。

Java还有Kotlin可以用。
回复

使用道具 举报

     
发表于 2024-6-24 17:55 来自手机 | 显示全部楼层
闪雷可达鸭 发表于 2024-6-24 17:13
是http请求啊?
这个我没想到。
之前用C++的libcurl库处理http请求。

这个不太行,io性能的关键是消息循环,建议用libuv
回复

使用道具 举报

     
发表于 2024-6-24 17:56 来自手机 | 显示全部楼层
因为你这个需求,直接上spring全家桶,从搭开发环境到上线最多一个工作日

用cpp的话我都不敢估工作量
回复

使用道具 举报

     
发表于 2024-6-24 18:01 | 显示全部楼层
java生态完整

你java做个应用,招人从高水平的到培训班出来的都一箩筐,自带垃圾回收不用操作内存,轮子完整文档多,现成一大堆解决方案

招一个合格的c++程序员的成本和相关工作量……

工业生产大部分情况下轮不到讨论性能优势,golang这么垃圾用的也血妈多,真到了web应用需要考虑性能的时候……rust了解一下朋友?
回复

使用道具 举报

发表于 2024-6-24 18:03 | 显示全部楼层
java八股,好写,成熟

web server这种大部分时间都卡在io上面的应用,你根本摸不到java性能的边界,用c++完全就是牛刀
回复

使用道具 举报

     
发表于 2024-6-24 18:08 | 显示全部楼层
底层原因是java开发便宜
于是配套的微服务生态也更完整
别说c++了 就是用python 自己撸一套 不费事么
回复

使用道具 举报

     
发表于 2024-6-24 18:11 | 显示全部楼层
你如果用cpp,建议配合nodejs
java有一套自己的八股,适合程序员用,但不是专门干的没必要学,浪费时间
回复

使用道具 举报

     
发表于 2024-6-24 18:12 | 显示全部楼层
ReginaldMorgan 发表于 2024-6-24 18:01
java生态完整

你java做个应用,招人从高水平的到培训班出来的都一箩筐,自带垃圾回收不用操作内存,轮子完 ...

不不不, web应用性能不足的时候就该加服务器了
回复

使用道具 举报

     
发表于 2024-6-24 18:17 来自手机 | 显示全部楼层
生态完善,开发效率高。别的不说,光是写cmake文件的时间,都够spring走完开发测试部署的全流程了

—— 来自 Xiaomi 23127PN0CC, Android 14上的 S1Next-鹅版 v2.1.2
回复

使用道具 举报

     
发表于 2024-6-24 18:18 | 显示全部楼层
viperasi 发表于 2024-6-24 18:12
不不不, web应用性能不足的时候就该加服务器了

对于绝大部分场景确实加服务器就能解决

所以说真的需要纠结的场合,是大型互联网公司那种超大规模的微服务集群,单服务几十万核,整个链路错综复杂,IAAS部门的一摊手说机房扩不动了你们自己想辙吧,杀了我们也没法给更多资源

这种时候才轮到纠结要不把java/golang换成rust/c+重构一下属于小公司不需要考虑的屠龙术
回复

使用道具 举报

发表于 2024-6-24 18:27 | 显示全部楼层
阿里搞双11后台也是用java
回复

使用道具 举报

     
发表于 2024-6-24 18:30 来自手机 | 显示全部楼层
解耦和啊,包括还能按照链路查询 bug,还有各种分库分表,当然我的建议是,你的使用场景不是全局秒杀,用户每日使用人数不超过 10w,就没必要
回复

使用道具 举报

     
发表于 2024-6-24 18:39 来自手机 | 显示全部楼层
spring全家桶,简单出活快啊。关注业务
回复

使用道具 举报

     
发表于 2024-6-24 18:47 | 显示全部楼层
java成熟该有的库都有。
c++不熟,我猜很多数据库的驱动都没有吧。

从语法角度来说,java因为语法不像c++那么灵活多变,
所以针对接口编程容易规范起来,更适合作为微服务。
回复

使用道具 举报

头像被屏蔽
     
发表于 2024-6-24 18:51 来自手机 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2024-6-24 18:56 来自手机 | 显示全部楼层
java上手比较容易。就是写多了,有时候不大注意优化。公司最近开发统计模块,我以前c++写的,有一个方法只要2毫秒。有一个同时用Java实现同样的功能要2秒 帮他看了看,发现他在用at(i)的方式遍历list。很不幸对方传过来的是一个linklist。然后这个list又超过10万条数据 他每次循环都at(i)和at(i+1)

—— 来自 OnePlus LE2120, Android 14上的 S1Next-鹅版 v2.5.4
回复

使用道具 举报

     
发表于 2024-6-24 19:07 来自手机 | 显示全部楼层
星空天神 发表于 2024-6-24 18:56
java上手比较容易。就是写多了,有时候不大注意优化。公司最近开发统计模块,我以前c++写的,有一个方法只 ...

stream 流秒了
回复

使用道具 举报

     
发表于 2024-6-24 19:17 来自手机 | 显示全部楼层
Python和java的环境比较好弄,都是bytecode+vm跨平台不折腾。cpp的话根据系统、硬件、abi等等配置依赖就能劝退很多人了。

—— 来自 Xiaomi Redmi K30 Pro, Android 12上的 S1Next-鹅版 v3.0.0.81-alpha
回复

使用道具 举报

     
发表于 2024-6-24 23:06 | 显示全部楼层
ReginaldMorgan 发表于 2024-6-24 18:18
对于绝大部分场景确实加服务器就能解决

所以说真的需要纠结的场合,是大型互联网公司那种超大规模的微服 ...

开发: 建议更换iaas, 他们能力不行
回复

使用道具 举报

     
发表于 2024-6-25 01:41 | 显示全部楼层
因为C++坑多,一般人写不好,开发成本高。
Java搞web spring那一套开箱即用,随便找个人来写都行。
回复

使用道具 举报

     
发表于 2024-6-25 04:06 | 显示全部楼层
Misono_Mayu 发表于 2024-6-24 18:30
解耦和啊,包括还能按照链路查询 bug,还有各种分库分表,当然我的建议是,你的使用场景不是全局秒杀,用户 ...

唯一一个提到微服务方面的答案
回复

使用道具 举报

     
发表于 2024-6-25 10:08 来自手机 | 显示全部楼层
革萌 发表于 2024-6-25 04:06
唯一一个提到微服务方面的答案

因为我是真的 java 码农,只会 java 这块
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2024-9-23 10:24 , Processed in 0.147759 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表