Category: Java Architecture
[转]手把手教你从0到1写一个简单的缓存框架
目前市面上已经有很多开源的缓存框架,比如 Redis、Memcached、Ehcache 等,那为什么还要自己动手写缓存?本文将带领大家从 0 到 1 写一个简单的缓存框架,目的是让大家对缓存的类型、缓存的标准、缓存的实现以及原理方面有一个系统的了解,做到知其然,知其所以然。
[转]系统化全方位监控告警总结
Q1花了较大的篇幅,系统化讲述了监控与告警体系的建立,本文稍作总结。如果恰巧你正在搭建自动化监控与告警平台,或许,细读这一系列文章就够了。 一《监控告警,集群信息管理先行》 什么是集群信息管理 使用配置文件进行集群信息管理 使用服务进行集群信息管理 使用配置中心进行集群信息管理 二《监控告警,员工信息管理,分级告警策略》 使用配置文件进行员工信息管理 使用服务进行员工信息管理 常见分级告警策略:告警收敛,分时告警,逐层上报,黑白跳动 三《多维度立体化监控》 什么是多维度立体化监控 立体化监控有哪些维度 操作系统+进程+端口 http状态码 服务存活性 接口处理时间 http接口 log监控 用户视角 如何快速实施“1.操作系统+进程+端口”的监控 如何快速实施“2.http状态码”的监控 如何快速实施“3.服务存活性”的监控 如何快速实施“4.接口处理时间”的监控 四《一分钟搞定“http接口”监控框架》 常见http监控玩法 常见http监控的弊端 通用可扩展http监控平台架构 简版http监控框架架构 100行伪代码搞定http监控 五《一分钟搞定“log”监控框架》 什么是日志监控 日志分级,错误日志监控,正常日志监控 日志与目录规范...
[转]数据库不要用外键约束
1. 引言 其实这个话题是老生常谈,很多人在工作中确实也不会使用外键。包括在阿里的JAVA规范中也有下面这一条 【强制】不得使用外键与级联,一切外键概念必须在应用层解决。 但是呢,询问他们原因,大多是这么回答的 每次做DELETE 或者UPDATE都必须考虑外键约束,会导致开发的时候很痛苦,测试数据极为不方便。 坦白说,这么说也是对的。但是呢,不够全面,所以开一文来详细说明。
[转]Spring Cloud底层原理
毫无疑问,Spring Cloud 是目前微服务架构领域的翘楚,无数的书籍博客都在讲解这个技术。 不过大多数讲解还停留在对 Spring Cloud 功能使用的层面,其底层的很多原理,很多人可能并不知晓。 因此本文将通过大量的手绘图,给大家谈谈 Spring Cloud 微服务架构的底层原理。 实际上,Spring Cloud 是一个全家桶式的技术栈,它包含了很多组件。本文先从最核心的几个组件,也就是 Eureka、Ribbon、Feign、Hystrix、Zuul 入手,来剖析其底层的工作原理。
[转]亿级PV,常见性能优化策略总结与真实案例
1. 0 题记 美团网是国内最大的O2O服务平台,虽然经常面临高并发、大流量等问题,但在用户体验优化上美团APP仍被众多IT同行所推崇,他们在性能优化方面积累的宝贵经验尤其值得我们学习。通过本文的分享,作者晓明力求达到如下效果: 1. 形成可实践、可借鉴、可参考的各种性能优化的方案以及选型考虑点,同时配合具体的真实案例,其他人遇到相似问题时,不用从零开始。 2. 有助于开阔视野,除了性能优化之外,也能提供通用的常见思路以及方案选型的考虑点,帮助大家培养在方案选型时的意识、思维以及做各种权衡的能力。
[转]美团开源实时监控系统CAT
1. CAT 项目背景 CAT(Central Application Tracking),是美团点评基于 Java 开发的一套开源的分布式实时监控系统。美团点评基础架构部希望在基础存储、高性能通信、大规模在线访问、服务治理、实时监控、容器化及集群智能调度等领域提供业界领先的、统一的解决方案,CAT 目前在美团点评的产品定位是应用层的统一监控组件,在中间件(RPC、数据库、缓存、MQ 等)框架中得到广泛应用,为各业务线提供系统的性能指标、健康状况、实时告警等服务。 本文会对 CAT 的客户端、性能等做详细深入的介绍,更多技术细节,欢迎阅读《深度剖析开源分布式监控 CAT》。
[转]jvm堆内存溢出后,其他线程是否可继续工作
背景 最近网上出现一个美团面试题:“一个线程OOM后,其他线程还能运行吗?”。我看网上出现了很多不靠谱的答案。这道题其实很有难度,涉及的知识点有jvm内存分配、作用域、gc等,不是简单的是与否的问题。 由于题目中给出的OOM,java中OOM又分很多类型;比如:堆溢出(“java.lang.OutOfMemoryError: Java heap space”)、永久带溢出(“java.lang.OutOfMemoryError:Permgen space”)、不能创建线程(“java.lang.OutOfMemoryError:Unable to create new native thread”)等很多种情况。 本文主要是分析堆溢出对应用带来的影响。