Category: Java Architecture

[汇总]JVM, OOM经验 0

[汇总]JVM, OOM经验

记一次隐藏很深的 JVM 线上惨案的分析、排查、解决! JVM在反射代码执行的过程导致Full GC   ArrayList插入1000w条数据之后,我怀疑了jvm… 加个 -XX:+PrintGCDetails -XX:+PrintGCDateStamps,看下第一次是不是有Full GC   案例实战:每日上亿请求量的电商系统,JVM年轻代垃圾回收参数如何优化?   神奇的 perfma:一站式解决所有 JVM 疑难杂症! JVM参数分析的链接地址:https://opts.console.perfma.com/   生产实践经验:线上系统的 JVM 内存是越大越好吗? 所以很多人在用Elasticsearch的时候就是这样的一个问题,老是觉得ES读取速度慢,几个亿的数据写入ES,读取的时候要好几秒。那能不花费好几秒吗?你要是ES集群部署的时候,给JVM内存过大,给os cache留了几个GB的内存,导致几亿条数据大部分都在磁盘上,不在os cache里,最后读取的时候大量读磁盘,耗费个几秒钟是很正常的。 所以说,针对类似Kafka、Elasticsearch这种生产系统部署的时候,应该要给JVM比如6GB或者几个GB的内存就可以了。因为他们可能不需要耗费过大的内存空间,不依赖JVM内存管理数据,当然具体是设置多少,需要你精准的压测和优化。 但是对于这类系统,应该给os cache留出来足够的内存空间,比如32GB内存的机器,完全可以给os cache留出来20多G的内存空间,那么此时假设你这台机器总共就写入了20GB的数据,就可以全部驻留在os cache里了。然后后续在查询数据的时候,不就可以全部从os cache里读取数据了,完全依托内存来走,那你的性能必然是毫秒级的,不可能出现几秒钟才完成一个查询的情况。   为什么我们选择Java开发高频交易系统?...

[汇总]网关Gateway经验 0

[汇总]网关Gateway经验

这样讲API网关,你应该能明白了吧! 阿里大佬分享API网关在微服务架构中的应用 关于Spring Cloud Zuul 那些“不能说的秘密”! 如何设计 API 接口,实现统一格式返回? 基于 Apache APISIX,爱奇艺 API 网关的更新与落地实践 微服务网关选型,请收下我的膝盖! Service Mesh 和 API Gateway 关系深度探讨 Service Mesh:微服务的网络通信基础设施,负责(系统内部的)服务间的通讯; API Gateway:负责将服务以 API 的形式暴露(给系统外部),以实现业务功能; 如何将gRPC与Guice相结合 全球首个API全生命周期管理平台Eolink! 如何解决业务开发时接口不能对外暴露的问题? 从11s到170ms!同事提出的18种接口优化技巧,那叫一个优雅!      

[汇总]Redis优化 0

[汇总]Redis优化

4次优化,我把 Redis 性能 “压榨” 到极致! pipeline,简直就是Redis优化的一大杀器

[汇总]分布式锁开发 0

[汇总]分布式锁开发

Spring Boot 2实现分布式锁 早期,分布式锁的相关代码存在于Spring Cloud的子项目Spring Cloud Cluster中,后来被迁到Spring Integration中。 Spring Boot加一个注解,轻松实现 Redis 分布式锁

Use Case 0

[转]鸟瞰 Java 并发框架

1. 1. 为什么要写这篇文章 几年前 NoSQL 开始流行的时候,像其他团队一样,我们的团队也热衷于令人兴奋的新东西,并且计划替换一个应用程序的数据库。但是,当深入实现细节时,我们想起了一位智者曾经说过的话:“细节决定成败”。最终我们意识到 NoSQL 不是解决所有问题的银弹,而 NoSQL vs RDMS 的答案是:“视情况而定”。类似地,去年RxJava 和 Spring Reactor 这样的并发库加入了让人充满激情的语句,如异步非阻塞方法等。为了避免再犯同样的错误,我们尝试评估诸如 ExecutorService、 RxJava、Disruptor 和 Akka 这些并发框架彼此之间的差异,以及如何确定各自框架的正确用法。

[转]一个牛逼的创业公司后台技术栈搭建方案 0

[转]一个牛逼的创业公司后台技术栈搭建方案

在大多数创业公司,因为没有大公司那些完善的基础设施,需要从开源界的一个个系统和组件做选型,最终形成整个的后台技术栈。 今天要说的后台是大后台的概念,放在服务器上的东西都属于后台的东西,比如使用的框架,语言,数据库,服务,操作系统等等。 整个后台技术栈,我的理解包括四个层面的内容: 语言:用了哪些开发语言,如:C++/Java/Go/PHP/Python/Ruby 等等。 组件:用了哪些组件,如:MQ 组件,数据库组件等等。 流程:怎样的流程和规范,如:开发流程,项目流程,发布流程,监控告警流程,代码规范等等。 系统:系统化建设,上面的流程需要有系统来保证,如:规范发布流程的发布系统,代码管理系统等等。