java后端有哪些技术栈

java后端有以下技术栈:1、消息队列;2、缓存;3、分库分表;4、数据同步;5、通讯;6、微服务;7、分布式工具。消息队列是最主要的基础组件,在整个体系架构中,有着及其重要的作用。kafka是目前最常用的消息队列,在大数据方面有着极高的吞吐量。

java后端有哪些技术栈-Worktile社区

1、消息队列

一个大型的分布式系统,通常都会异步化,走消息总线。消息队列作为最主要的基础组件,在整个体系架构中,有着及其重要的作用。kafka是目前最常用的消息队列,尤其是在大数据方面,有着极高的吞吐量。而rocketmq和rabbitmq,都是电信级别的消息队列,在业务上用的比较多。

2、缓存

数据缓存是减少数据库压力的有效途径,有单机java内缓存,和分布式缓存之分。对于单机来说,guava的cache和ehcache都是些熟面孔。对于分布式缓存来说,优先选择的就是redis,别犹豫。由于redis是单线程的,并不适合高耗时操作。所以对于一些数据量比较大的缓存,比如图片、视频等,使用老牌的memcached效果会好的多。

3、分库分表

分库分表,几乎每一个上点规模的公司,都会有自己的方案。目前,推荐使用驱动层的sharding-jdbc,或者代理层的mycat。如果你没有额外的运维团队,又不想花钱买其他机器,那么就选前者。如果分库分表涉及的项目不多,spring的动态数据源是一个非常好的选择。它直接编码在代码里,直观但不易扩展。

4、数据同步

不管什么数据库,实时数据同步工具,都是把自己模拟成一个从库,进行数据拉取和解析。具体来说,mysql是通过binlog进行同步;postgresql使用wal日志进行同步。对mysql来说,canal是国内用的非常多的方案;类似的databus也是比较好用的工具。现在,canal、maxwell等工具,都支持将要同步的数据写入到mq中,进行后续处理,方便了很多。

5、通讯

Java 中,netty已经成为当之无愧的网络开发框架,包括其上的socketio(不要再和我提mina了)。对于http协议,有common-httpclient,以及更加轻量级的工具okhttp来支持。对于一个rpc来说,要约定一个通讯方式和序列化方式。json是最常用的序列化方式,但是传输和解析成本大,xml等文本协议与其类似,都有很多冗余的信息;avro和kryo是二进制的序列化工具,没有这些缺点,但调试不便。

6、微服务

我们不止一次说到微服务,这一次我们从围绕它的一堆支持框架,来窥探一下这个体系。是的,这里依然是在说spring cloud。熔断组件,官方的hystrix也已经不维护了。推荐使用resilience4j,最近阿里的sentinel也表现强劲。对于调用链来说,由于OpenTracing的兴起,有了很多新的面孔。推荐使用jaeger或者skywalking。spring cloud集成的sleuth+zipkin功能稍弱,甚至不如传统侵入式的cat。

7、分布式工具

大家都知道分布式系统zookeeper能用在很多场景,与其类似的还有基于raft协议的etcd和consul。由于它们能够保证极高的一致性,所以用作协调工具是再好不过了。用途集中在:配置中心、分布式锁、命名服务、分布式协调、master选举等场所。对于分布式事务方面,则有阿里的fescar工具进行支持。但如非特别的必要,还是使用柔性事务,追寻最终一致性,比较好。

延伸阅读:

什么是栈?

栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。

栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被名列前茅个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。

栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(较好),另一端为栈底(bottom);栈底固定,而栈顶浮动;栈中元素个数为零时称为空栈。插入一般称为进栈(PUSH),删除则称为退栈(POP)。栈也称为先进后出表。

文章标题:java后端有哪些技术栈,发布者:小编,转载请注明出处:https://worktile.com/kb/p/37177

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小编小编认证作者
上一篇 2023年2月6日 下午10:39
下一篇 2023年2月6日 下午10:41

相关推荐

  • rfid读卡器有哪些参数

    rfid读卡器的参数有:1、工作频率;2、作用距离;3、数据传输速率;4、安全要求;5、存储容量;6、RFID系统的连通性;7、多电子标签同时识读性。工作频率是射频识别系统最基本的技术参数之一,RFID系统可以简单地分为:低频、高频和超高颜以及微波系统。 1、工作频率 工作频率是射频识别系统最基本的…

    2023年1月9日
    96900
  • 单位oa是什么

    单位OA通常指的是“办公自动化(Office Automation)”,它涉及使用各种硬件和软件工具来创建、存储、传输和管理办公信息。1、办公自动化软件的应用帮助提高工作效率、降低成本、改善办公环境。例如,在文档管理方面,OA系统允许电子文档的创建、编辑、存储和共享,这极大地简化了文件处理过程。 O…

    2024年1月11日
    18500
  • devops用什么代替

    标题:DevOps的替代解决方案 摘要:在技术架构的演变过程中,1、云原生架构 2、流水线自动化工具,以及3、无服务器(serverless)计算等技术,逐渐成为可行的DevOps替代选择。特别地,云原生架构通过其旨在提高系统可靠性、可扩展性及开发灵活性的设计,正成为公司追寻更高效率与敏捷性时的首选…

    2024年3月26日
    1700
  • 什么是零停机重启工具

    零停机重启工具(Zero Downtime Restart)是一种系统管理员使用的软件工具,用于在无需停机的情况下重启服务器或应用程序。这个工具可以帮助系统管理员避免服务中断和数据丢失,提高系统的可用性和稳定性。 零停机重启工具(Zero Downtime Restart)是一种系统管理员使用的软件…

    2023年5月29日
    19400
  • JAVAweb开发需要学习什么

    JAVAweb开发需要学习:1、Java基础语法;2、JavaWeb基础;3、框架开发。Java基础语法部分是学习Java语言的关键点和难题,需要重点掌握类、对象、属性、方法、封装、继承、多态等一些列概念,这部分的学习通常需要一个月左右的时间。 1、Java基础语法 Java基础语法部分是学习Jav…

    2023年1月30日
    1.0K00
  • oa系统 智能化

    标题:OA系统智能化的前景与挑战 OA系统智能化意味着利用人工智能、机器学习、大数据分析等技术提升办公自动化系统的效率与智能程度。1、提升工作效率;2、优化决策过程;3、强化安全机制;4、提高用户体验;5、管理数据海量化。OA系统的智能化能够解放员工从繁琐的日常工作中,使其专注于更有价值的任务。提升…

    2024年1月17日
    20100
  • 如何提高团队的进度管理能力

    在工程项目管理中,提升团队进度管理能力至关重要。这包括1、精准的时间规划、2、高效的任务分配、3、持续的进度监控与4、灵活的进度调整。在这些要素中,提高精准时间规划尤为关键,因为它确保了项目按预定目标推进,防止了时间资源的浪费。 对于精准的时间规划而言,必须依赖于细致的项目计划。首要任务是定义项目范…

    2023年12月26日
    17800
  • oa属于saas吗

    OA(办公自动化系统)通常归类为SAAS(软件即服务),它提供在线访问办公自动化工具,可满足企业的日常运作需求。SAAS提供商维护软件的基础设施与更新,用户可以依据需求订购服务。 OA系统作为SAAS的一种,它通过网络将软件部署到多租户平台上,企业通过互联网连接使用这些应用程序。OA系统通常包括电子…

    2024年1月11日
    18900
  • 敏捷开发是什么

    敏捷开发是一种以人为核心、迭代、循序渐进的软件开发方法,它强调团队合作、客户需求和适应变化。该方法在20世纪末期由一群敏捷宣言签署者推广和实践,如今敏捷开发已成为了现代软件开发的主流方式。敏捷开发的基本原则包括以人为本、可持续的开发、适应变化、快速反馈和简洁性。通过敏捷开发,团队可以更快地响应市场需求,提高软件质量和生产效率,从而获得更大的商业价值。

    2023年10月20日
    25500
  • ChatGPT在个性化营销中的应用有哪些

    ChatGPT在个性化营销中主要是提升客户体验和业绩的利器。该技术通过智能化的交互能力使营销策略更加精准和有效。具体而言,ChatGPT在个性化营销的应用涵盖了数据驱动的客户洞察、实时交互与客户服务、个性化内容创建、客户行为分析与预测等方面。通过深入解析顾客数据,ChatGPT能在对话中实时调整信息…

    2023年12月5日
    26300

发表回复

登录后才能评论
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部