
Java进阶
liuhuiteng
这个作者很懒,什么都没留下…
展开
-
设计模式实践及总结
一、设计模式概念及设计原则 记得刚开始学编程的时候就看过设计模式相关的书籍,虽然当时有很多地方都不理解,但是建立了早期对架构设计的意识,让后面的学习和工作中受益匪浅,最近两年也一直在做架构设计方面的工作,解开了之前很多的困惑,也形成了一些自己的思想,我需要把自己零散的想法系统的整理出来,如果能对大家有帮助当然更好了。为什么选择设计模式?因为架构设计是一个很宽泛甚至对于有些人是一个很...原创 2020-01-19 13:48:30 · 1504 阅读 · 0 评论 -
互联网架构:常用基础中间件介绍
一般而言中间件和框架的区别是,中间件是独立运行的用于处理某项专门业务的CS程序,会有配套的客户端和服务端,框架虽然也是处理某个专门业务的但是它不是独立程序,是寄宿在宿主程序进程内的一套类库。图上绿色部分代表了框架,红色部分代表了管理系统,紫色部分代表了中间件。本文会着重介绍管理系统和中间件部分。一、配置管理比较知名的分布式配置服务和管理系统有携程的 https://github...原创 2020-01-17 14:30:38 · 6025 阅读 · 0 评论 -
互联网公司常用架构模式梳理
一、管理和监控1.1、大使模式:创建代表消费者服务或应用程序发送网络请求的帮助服务进程外的代理服务(很多框架层面的事情可以以软件框架的形式寄宿在进程内,也可以以独立的代理形式做一个网络中间件)。这里的大使模式意思就是这么一个网络代理进程,用于和远端的服务进行通讯,完成下面的工作:服务路由 服务熔断 服务跟踪 服务监控 服务授权 数据加密 日志记录由于是独立进程的网络服...原创 2020-01-17 09:46:44 · 7238 阅读 · 0 评论 -
Netty异步非阻塞事件驱动及原理详解
本文基于 Netty 4.1 展开介绍相关理论模型、使用场景、基本组件、整体架构,知其然且知其所以然,希望给大家在实际开发实践、学习开源项目方面提供参考。 Netty 是一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。一、JDK 原生 NIO 程序的问题JDK 原生也有一套网络应用程序 API,但是存在一系列问题,主要如下:...原创 2019-09-29 10:45:50 · 3090 阅读 · 0 评论 -
TCC分布式实现原理及分布式应用如何保证高可用
一、业务场景介绍咱们先来看看业务场景,假设你现在有一个电商系统,里面有一个支付订单的场景。那对一个订单支付之后,我们需要做下面的步骤:更改订单的状态为“已支付” 扣减商品库存 给会员增加积分 创建销售出库单通知仓库发货好,业务场景有了,现在我们要更进一步,实现一个 TCC 分布式事务的效果。订单服务-修改订单状态 库存服务-扣减库存 积分服务-增加积分 仓...转载 2019-07-19 11:50:52 · 713 阅读 · 0 评论 -
Reactor三种线程模型与Netty线程模型
一、Reactor三种线程模型1.1、单线程模型 单个线程以非阻塞IO或事件IO处理所有IO事件,包括连接、读、写、异常、关闭等等。单线程Reactor模型基于同步事件分离器来分发事件,这个同步事件分离器,可以看做是一个单线程的while循环。下图描述了单线程模型的处理过程,看起来与网上大部分资料的图片不同,但本质是相同的。 注意上面的Selector之所以...转载 2019-06-27 22:53:37 · 3630 阅读 · 2 评论 -
Java远程通讯技术及原理分析
在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有很多可实现远程通讯的技术,例如:RMI、MINA、ESB、Burlap、Hessian、SOAP、EJB和JMS等,这些名词之间到底是些什么关系呢,它们背后到底是基于什么原理实现的呢,了解这些是实现分布式服务框架的基础知识,而如果在性能上有高的要求的话,那深入了解这些技术背后的机制就是必须的了。一、基...转载 2019-06-24 17:54:40 · 858 阅读 · 0 评论 -
我对Spring的理解
1、什么是Spring? Spring是Java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。2、使用Spring框架的好处是什么?(1)、轻量:Spring是轻量的,基本的版本大约2MB。(2)、控制反转:...原创 2019-04-17 18:31:40 · 822 阅读 · 0 评论 -
Java并发优化思路
一、并发优化1.1、Java高并发包所采用的几个机制(1)、CAS(乐观操作)jdk5以前采用synchronized,对共享区域进行同步操作,synchronized是重的操作,在高并发情况下,会引起线程频繁切换;而CAS是一种乐观锁机制,compare and swap,不加锁,而是假设没有冲突去完成,若有冲突会重试(非阻塞)。compare&swap是原子...原创 2019-03-21 22:24:40 · 391 阅读 · 0 评论 -
Java多线程并发编程
一、线程池1.1、什么是线程池 线程池是一种多线程的处理方式,利用已有线程对象继续服务新的任务(按照一定的执行策略),而不是频繁地创建销毁线程对象,由此提高服务的吞吐能力,减少CPU的闲置时间。具体组成部分包括:(1)、线程池管理器(ThreadPool)用于创建和管理线程池,包括创建线程池、销毁线程池,添加新任务。(2)、工作线程(Worker)线程池中的线程,闲置的...原创 2019-03-12 19:18:05 · 3429 阅读 · 0 评论 -
Java应用性能调优工具介绍及实践
一、背景(1)、随着微服务架构的逐渐推广,一个大型的单个应用程序被拆分为数个微服务系统,这为研发人员的本地调试跟踪带来困难(2)、在微服务架构中,由于业务的复杂性,常常一个业务流程涉及好数个微服务系统的调用,性能排查时到底因为哪个微服务系统的性能瓶颈从而导致整个业务性能的瓶颈,不好定位因此,下面为大家介绍目前有哪些开源工具支持查看应用JVM状况、Debug调试跟踪、调用链跟...原创 2019-03-03 13:22:08 · 473 阅读 · 0 评论 -
生产Docker应用重启排查经历
一、现象描述 近期,生产云平台监控发生Docker应用重启次数过多事故报警,经观察发现某些Docker应用不定期地出现重启现象,已严重影响服务正常提供生产应用重启的判断条件:健康检查连续3次检查不通过生产健康检查间隔时间设置为:5s,也就是说如果应用对健康检查请求在15s内未返回结果,则云平台自动重启应用二、重启现象分析2.1、线程池泄漏问题(1)、方法一:p...原创 2019-03-02 22:23:02 · 1581 阅读 · 0 评论