netty
文章平均质量分 87
Java烂猪皮V
专注于分享Java后端架构核心技术知识点以及最新面试宝典。
展开
-
深入理解阿里分布式消息中间件
什么是分布式消息中间件什么是分布式消息中间件?对于分布式消息中间件,首先要了解两个基础的概念,即什么是分布式系统,什么又是中间件。 分布式系统:“A distributed system is one in which components located at networked computers communicate and coordinate their actions only by...原创 2018-07-06 21:54:45 · 1722 阅读 · 0 评论 -
MySQL 数据库的高可用性分析
MySQL数据库是目前开源应用最大的关系型数据库,有海量的应用将数据存储在MySQL数据库中。存储数据的安全性和可靠性是生产数据库的关注重点。本文分析了目前采用较多的保障MySQL可用性方案。MySQL ReplicationMySQL Replication是MySQL官方提供的主从同步方案,用于将一个MySQL实例的数据,同步到另一个实例中。Replication为保证数据安全做了重要的保证,...原创 2018-06-20 22:23:49 · 356 阅读 · 0 评论 -
如何设计一个 RPC 系统
RPC是一种方便的网络通信编程模型,由于和编程语言的高度结合,大大减少了处理网络数据的复杂度,让代码可读性也有可观的提高。但是RPC本身的构成却比较复杂,由于受到编程语言、网络模型、使用习惯的约束,有大量的妥协和取舍之处。本文就是通过分析几种流行的RPC实现案例,提供大家在设计RPC系统时的参考。由于RPC底层的网络开发一般和具体使用环境有关,而编程实现手段也非常多样化,但不影响使用者,因此本文基...原创 2018-06-20 22:21:52 · 1017 阅读 · 0 评论 -
MySQL 数据库设计总结
规则1:一般情况可以选择MyISAM存储引擎,如果需要事务支持必须使用InnoDB存储引擎。注意:MyISAM存储引擎 B-tree索引有一个很大的限制:参与一个索引的所有字段的长度之和不能超过1000字节。另外MyISAM数据和索引是分开,而InnoDB的数据存储是按聚簇(cluster)索引有序排列的,主键是默认的聚簇(cluster)索引,因此MyISAM虽然在一般情况下,查询性能比Inno...原创 2018-06-20 22:19:44 · 357 阅读 · 0 评论 -
RabbitMQ进程结构分析与性能调优
RabbitMQ是一个流行的开源消息队列系统,是AMQP(高级消息队列协议)标准的实现,由以高性能、健壮、可伸缩性出名的Erlang语言开发,并继承了这些优点。业界有较多项目使用RabbitMQ,包括OpenStack、Spring、Logstash等。腾讯云在开发云消息队列系统(CMQ)时,对RabbitMQ进行了大量的学习和优化,包括瓶颈分析、内存管理、参数调优等。下文结合Erlang和Rab...原创 2018-06-20 22:10:04 · 719 阅读 · 0 评论 -
MySQL 内核深度优化
MYSQL数据库适用场景广泛,相较于Oracle、DB2性价比更高,Web网站、日志系统、数据仓库等场景都有MYSQL用武之地,但是也存在对于事务性支持不太好(MySQL 5.5版本开始默认引擎才是InnoDB事务型)、存在多个分支、读写效率瓶颈等问题。所以如何用好MYSQL变得至关重要,一方面需要通过MYSQL优化找出系统读写瓶颈,提高数据库性能;另一方面需要合理涉及数据结构、调整参数,以提高用...原创 2018-06-20 22:05:56 · 417 阅读 · 0 评论 -
基于Spring Cloud的微服务落地
微服务架构模式的核心在于如何识别服务的边界,设计出合理的微服务。但如果要将微服务架构运用到生产项目上,并且能够发挥该架构模式的重要作用,则需要微服务框架的支持。在Java生态圈,目前使用较多的微服务框架就是集成了包括Netfilix OSS以及Spring的Spring Cloud。它包括:Spring Cloud Config:配置管理工具,支持使用Git存储配置内容,可以实现应用配置的外部化存...原创 2018-05-29 22:30:25 · 585 阅读 · 0 评论 -
10 个常用的软件架构模式
你是否曾经思考过如何设计大型的企业级系统?在决定启动软件开发之前,首要的是选择恰当的架构来指引系统的功能及质量属性设计。因此在将软件架构应用于设计之前,必需要了解常用的架构模式。什么是架构模式?Wikipedia 的解释:在软件架构中,架构模式是对特定环境下常见问题的通用且可重用的解决方案。架构模式与软件设计模式很相似,但架构模式的层次更高,且外延更大。这篇文章将简述常见的 10 种架构模式的概念...原创 2018-05-29 21:39:25 · 480 阅读 · 0 评论 -
阿里架构师眼里JVM可以说的那些事
前言对于C语言开发的程序员来说,在内存管理方面,必须负责每一个对象的生命周期,从有到无。对于Java程序员你来说,在虚拟机内存管理的帮助下,不需要为每个new对象都匹配free操作,内存泄露和内存溢出等问题也不太容易出现,不过也正是因为把内存管理交给了虚拟机,一旦运行中的程序出现了内存泄露问题,给排查过程造成很大困难。所以只有理解了Java虚拟机的运行机制,才能够运筹帷幄于各种代码。本文以HotS...原创 2018-06-04 22:06:32 · 308 阅读 · 0 评论 -
分布式消息中间件 — MQ
消息队列(Message Queue,简称 MQ)是阿里巴巴集团中间件技术部自主研发的专业消息中间件。用于保证异构应用之间的消息传递。应用程序通过MQ接口进行互连通信,可以不必关心网络上的通信细节,从而将更多的注意力集中于应用本身。分布式消息系统作为实现分布式系统可扩展、可伸缩性的关键组件,需要具有高吞吐量、高可用等特点。对象•消息 (Message)•队列 (Queue)•队列管理器(Queue...原创 2018-06-04 21:14:20 · 1421 阅读 · 0 评论 -
CentOS 6.5搭建ELK环境ElasticSearch+Kibana+Logstash
ELK工作流程多个独立的Agent(Shipper)负责收集不同来源的数据,一个中心Agent(Indexer)负责汇总和分析数据,在中心Agent前的Broker(使用Redis实现)作为缓冲区,中心Agent后的ElasticSearch用于存储和搜索数据,前端的Kibana提供丰富的图表展示。Shipper表示日志收集,使用LogStash收集各种来源的日志数据,可以是系统日志、文件、Red...原创 2018-05-21 22:45:20 · 521 阅读 · 0 评论 -
Java之——多线程中的Synchronized和volatile与面试题
1、Synchronized关键字1、方法中的变量不存在非线程安全问题,都是线程安全的。2、两个线程访问同一个对象中的同步方法时,一定是线程安全的。3、关键字synchronized取得的锁都是对象锁,而不是把一段代码或方法(函数)当作锁,哪个线程先执行synchronized关键字的方法,哪个线程就持有该方法所属对象的锁Lock,那么其他线程只能呈等待状态,前提是多个线程访问的是同一个对象。但如...原创 2018-05-17 23:17:03 · 595 阅读 · 0 评论 -
基于Java NIO框架区别对比
一.通信框架流行基于Java NIO通信框架有Mina、Netty、Grizzly等。接下来说下它们之间的对比。二.它们的出身1、Mina出身于开源界的大牛Apache组织;2、Netty出身于商业开源大亨Jboss;3、Grizzly则出身于土鳖Sun公司。三.它们的设计理念1、Mina Mina(Multipurpose Infrastructure for Network Applicati...原创 2018-05-16 23:00:42 · 306 阅读 · 0 评论 -
高可用Redis服务架构分析与搭建
基于内存的Redis应该是目前各种web开发业务中最为常用的key-value数据库了,我们经常在业务中用其存储用户登陆态(Session存储),加速一些热数据的查询(相比较mysql而言,速度有数量级的提升),做简单的消息队列(LPUSH和BRPOP)、订阅发布(PUB/SUB)系统等等。规模比较大的互联网公司,一般都会有专门的团队,将Redis存储以基础服务的形式提供给各个业务调用。不过任何一...原创 2018-04-24 21:33:38 · 297 阅读 · 0 评论 -
读懂Netty的高性能架构之道
Netty是一个高性能、异步事件驱动的NIO框架,它提供了对TCP、UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用户可以方便的主动获取或者通过通知机制获得IO操作结果。作为当前最流行的NIO框架,Netty在互联网领域、大数据分布式计算领域、游戏行业、通信行业等获得了广泛的应用,一些业界著名的开源组件也基于Net...原创 2018-06-07 22:58:12 · 518 阅读 · 0 评论 -
Redis 的 5 个常见应用场景
前言Redis 是一个强大的内存型存储,具有丰富的数据结构,使其可以应用于很多方面,包括作为数据库、缓存、消息队列等等。如果你的印象中Redis只是一个 key-value 存储,那就错过了Redis很多强大的功能,下面就是实际应用场景中5个最普遍的案例。1. 全页面缓存如果你使用的是服务器端内容渲染,你又不想为每个请求重新渲染每个页面,就可以使用 Redis 把常被请求的内容缓存起来,能够大大的...原创 2018-06-08 17:41:47 · 10474 阅读 · 0 评论 -
Spring核心——Bean的定义与控制
在前面两篇介绍Sring核心与设计模式的文章中,分别介绍了Ioc容器和Bean的依赖关系。如果阅读过前2文就会知道,Spring的整个运转机制就是围绕着IoC容器以及Bean展开的。IoC就是一个篮子,所有的Bean都向里面扔。除了提供篮子功能创建并存放Bean之外,IoC还要负责管理Bean与Bean之间的关系——依赖注入。之前也提到Bean是Spring核心容器的最小工作单元,Spring一些...原创 2018-06-28 21:44:28 · 478 阅读 · 0 评论 -
通往架构师路上的经验总结
前言:我先介绍一下我的新同事,据说他是美国篮球运动员詹姆斯的死忠粉,公司好多同事都这么叫他James,有8年开发经验的架构师,之前在AL待过,我一听说是AL的,啧啧啧........,就有种莫名的种亲切感,就立马找新同事聊了起来。我们在空余的时间聊了很久,也聊了好多。毕竟之前都在AL待过,感觉话题还是有的。在聊天过程中,我们也聊到了他为什么离开AL,也聊到了他在成为架构师的道路上的辛酸历程,聊过后...原创 2018-07-10 22:13:00 · 346 阅读 · 0 评论 -
深入理解JVM虚拟机
自动内存管理机制Java虚拟机原理 所谓虚拟机,就是一台虚拟的机器。他是一款软件,用来执行一系列虚拟计算指令,大体上虚拟机可以分为系统虚拟机和程序虚拟机, 大名鼎鼎的Visual Box、Vmare就属于系统虚拟机,他们完全是对物理计算的仿真,提供了一个可以运行完整操作系统的软件平台。 程序虚拟机典型代码就是Java虚拟机,它专门为执行单个计算程序而计算,在Java虚拟机中执行的指令我们成为Jav...原创 2018-06-27 21:53:48 · 391 阅读 · 0 评论 -
深入理解JAVA中的NIO
前言:传统的 IO 流还是有很多缺陷的,尤其它的阻塞性加上磁盘读写本来就慢,会导致 CPU 使用效率大大降低。所以,jdk 1.4 发布了 NIO 包,NIO 的文件读写设计颠覆了传统 IO 的设计,采用通道+缓存区使得新式的 IO 操作直接面向缓存区,并且是非阻塞的,对于效率的提升真不是一点两点,我们一起来看看。通道 Channel我们说过,NIO 的核心就是通道和缓存区,所以它们的工作模式是这...原创 2018-07-09 21:51:20 · 391 阅读 · 0 评论 -
Netty原理分析
1. Netty简介Netty是一个高性能、异步事件驱动的NIO框架,基于JAVA NIO提供的API实现。它提供了对TCP、UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用户可以方便的主动获取或者通过通知机制获得IO操作结果。 作为当前最流行的NIO框架,Netty在互联网领域、大数据分布式计算领域、游戏行业、通...原创 2018-06-26 22:12:11 · 321 阅读 · 0 评论 -
基于Java NIO框架区别对比
一.通信框架流行基于Java NIO通信框架有Mina、Netty、Grizzly等。接下来说下它们之间的对比。二.它们的出身1、Mina出身于开源界的大牛Apache组织;2、Netty出身于商业开源大亨Jboss;3、Grizzly则出身于土鳖Sun公司。三.它们的设计理念1、Mina Mina(Multipurpose Infrastructure for Network Applicati...原创 2018-06-26 22:04:41 · 445 阅读 · 0 评论 -
SpringBoot使用RabbitMQ消息队列
RabbitMQ简介AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语...原创 2018-06-19 22:57:11 · 423 阅读 · 0 评论 -
阿里消息中间件之JMS实践(ActiveMQ)
1、消息中间件作用作为一个消息传递中间层,方便信息发送者和接受者通信。2、消息中间件好处1、信息解耦:信息发送方和接收方通过中间件通信,不需要直接通信。2、异步:消息被中间件处理,发送方和接收方都不用直接通信。3、安全可靠:中间件做的还是很可靠地。。4、横向扩展:支持多信息发送方和接收方5、顺序保证:中间件功能。3、常见消息中间件JMS(Java Message Service):java平台中面...原创 2018-06-19 22:54:37 · 453 阅读 · 0 评论 -
阿里分布式服务框架Dubbo的架构总结
Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色。关于注册中心、协议支持、服务监控等内容,详见后面描述。总...原创 2018-06-25 21:38:11 · 335 阅读 · 0 评论 -
谈谈为什么需要服务治理(Dubbo)
服务治理主要针对于当前分布式架构下多服务、微服务等。服务是分布式系统下的一个不大不小的部分,有了服务的组成,整个系统才能活起来。随着业务的增长,服务不能一味地随之增长,需要管理、治理。没有服务治理的分布式系统不一定会失败,但是随着业务的增长,这个系统一定会很痛苦。服务治理的目标服务治理严格意义上应该划分为三个阶段,包含了服务的整个生命周期。其中服务设计期主要针对于服务的设计期、开发期,而服务运行期...原创 2018-06-09 17:21:51 · 1675 阅读 · 0 评论 -
深度解读Tomcat中的NIO模型
一、I/O复用模型解读Tomcat的NIO是基于I/O复用来实现的。对这点一定要清楚,不然我们的讨论就不在一个逻辑线上。下面这张图学习过I/O模型知识的一般都见过,出自《UNIX网络编程》,I/O模型一共有阻塞式I/O,非阻塞式I/O,I/O复用(select/poll/epoll),信号驱动式I/O和异步I/O。这篇文章讲的是I/O复用。这里先来说下用户态和内核态,直白来讲,如果线程执行的是用户...原创 2018-06-09 17:16:31 · 473 阅读 · 0 评论 -
Nginx 架构初探
引言:众所周知,Nginx 服务器是一个高性能的 Web 和反向代理服务器。Nginx 在激烈的 Web 服务器竞争中依旧保持良好的发展势头,一度成为 Web 服务器市场的后期之秀,这一切跟 Nginx 的架构设计是分不开的。一. Nginx 模块化设计高度模块化的设计是 Nginx 的架构基础。Nginx 服务器被分解为多个模块,每个模块就是一个功能模块,只负责自身的功能,模块之间严格遵循“高内...原创 2018-06-09 16:41:31 · 773 阅读 · 0 评论 -
使用并发工具实现 RPC 调用流量控制
前言RPC 服务中,每个服务的容量都是有限的,即资源有限,只能承受住给定的网络请求,所以,在设计 RPC 框架的时候,一定要考虑流量控制这个问题。而 Java 中,实现流量控制有很多中方式,今天说 2 种。Semaphore 实现流控代码:代码中,我们模拟了 100 个线程,每个线程无限调用 RPC。同时使用另一个定时任务,定时更新 Semaphore 可用许可为 100。客户端线程调用时,会尝试...原创 2018-06-08 21:43:11 · 759 阅读 · 0 评论 -
如何基于MySQL及Redis搭建统一的kv存储服务
本文介绍基于MySQL及Redis搭建统一的kv存储服务:常用部署方式及其特点,Cluster manager,MySQL和Redis集群方案,以及Sync数据同步服务。一、MySQL+Redis 常用部署方式1.1 拓扑1.2 特点业务层通过双写同时写MySQL及Redis。读通常在Redis,若读取不到,则从MySQL读取,然后将数据同步到Redis,Redis通常设置expire或者默认LR...原创 2018-04-24 20:31:15 · 634 阅读 · 0 评论 -
从Uber微服务看最佳实践如何炼成?
微服务特性对于微服务没有适当的定义,你可以说它是一个框架,由小型的、独立的可部署的服务组成,执行不同的操作。微服务专注于单个业务领域,可以作为完全独立的可部署服务,并在不同的技术栈上实现它们。单体架构和微服务架构区别在使用微服务构建自己的应用程序之前,需要清楚地了解应用程序的范围和功能。微服务特性解耦 - 系统内的服务在很大程度上是解耦的。因此,整个应用程序可以轻松构建,更改和缩放组件化 - 微服...原创 2018-04-13 22:06:49 · 376 阅读 · 0 评论 -
微服务开发中的数据架构设计
前言微服务是当前非常流行的技术框架,通过服务的小型化、原子化以及分布式架构的弹性伸缩和高可用性,可以实现业务之间的松耦合、业务的灵活调整组合以及系统的高可用性。为业务创新和业务持续提供了一个良好的基础平台。本文分享在这种技术架构下的数据架构的设计思想以及设计要点,本文包括下面若干内容。微服务技术框架中的多层数据架构设计数据架构设计中的要点要点1:数据易用性要点2:主、副数据及数据解耦要点3:分库分...原创 2018-04-12 23:06:17 · 306 阅读 · 0 评论 -
2018年微服务架构沿着这5个趋势发展必炸裂
在2017年,DevOps领域中增加了大量的生态系统玩家,那么2018年会有哪些变化呢?本文展望了微服务在2018年可能的5个发展趋势,并对各个趋势进行了详细的介绍。对于DevOps来说,2017年是重要的一年,不仅生态系统玩家的数量大幅增加,而且CNCF项目增加了两倍。展望未来一年,我们期待创新和市场变化进一步加速。以下是我们对2018年微服务趋势的看法:服务网格、事件驱动架构、容器本地安全、G...原创 2018-03-10 22:48:48 · 789 阅读 · 0 评论 -
2018年微服务架构需要我们重新定义
什么是微服务首先微服务并没有一个官方的定义,想要直接描述微服务比较困难,我们可以通过对比传统WEB应用,来理解什么是微服务。传统的WEB应用核心分为业务逻辑、适配器以及API或通过UI访问的WEB界面。业务逻辑定义业务流程、业务规则以及领域实体。适配器包括数据库访问组件、消息组件以及访问接口等。一个打车软件的架构图如下:尽管也是遵循模块化开发,但最终它们会打包并部署为单体式应用。例如Java应用程...原创 2018-03-10 16:32:45 · 1180 阅读 · 1 评论 -
架构的演进,阿里资深Java工程师表述架构的腐化之谜
前言新技术层出不穷。过去十年时间里,我们经历了许多激动人心的新技术,包括那些新的框架、语言、平台、编程模型等等。这些新技术极大地改善了开发人员的工作环境,缩短了产品和项目的面世时间。然而作为在软件行业第一线工作多年的从业者,我们却不得不面对一个现实,那就是当初采用新技术的乐趣随着项目周期的增长而迅速减少。无论当初的选择多么光鲜,半年、一年之后,只要这个项目依然活跃,业务在扩张——越来越多的功能需要...原创 2018-03-02 22:35:35 · 513 阅读 · 0 评论 -
2018年5种最流行的AI编程语言
有没有兴趣来了解更多与AI开发有关的内容? 本文将介绍创建AI程序时可以使用的5种最佳语言。Python Python语法简单,功能多样,是开发人员最喜爱的AI开发编程语言之一。 对于开发人员来说,Python在机器学习上的应用非常令人高兴,因为它比C ++和Java等语言要简单。 Python也是一种非常便携的语言,因为它可以在Linux,Windows,Mac OS和UNIX平台上使用。 Py...原创 2018-03-02 22:07:14 · 3912 阅读 · 2 评论 -
阿里P8架构师记录一次模拟简单秒杀场景的实践
秒杀活动可以说在互联网上随处可见,从12306抢票,到聚划算抢购,我们生活的方方面面都可以看到秒杀的身影。秒杀的架构设计也是对于一个架构师架构设计能力的一次考验。本文的目的并不在于提供一个可以直接落地的设计方案,而是意在提供一个简单的方法,一个思路,使大家能够对于秒杀背后的一些设计有更感性的认识, 并且可以自己亲自动手实践一下。所有的配置及源码都在本文最后的GitHub repository中可以...原创 2018-03-16 11:31:24 · 1626 阅读 · 0 评论 -
阿里P9架构师讲解从单机至亿级流量大型网站系统架构的演进过程
阶段一、单机构建网站网站的初期,我们经常会在单机上跑我们所有的程序和软件。此时我们使用一个容器,如tomcat、jetty、jboos,然后直接使用JSP/servlet技术,或者使用一些开源的框架如maven+spring+struct+hibernate、maven+spring+springmvc+mybatis;最后再选择一个数据库管理系统来存储数据,如mysql、sqlserver、or...原创 2018-03-15 21:10:57 · 508 阅读 · 0 评论 -
2018年这八个工具每位Java开发人员应该知道(爱)
在Stormpath,我们非常重视质量和生产率。 任何优秀的工匠已经知道,光有天赋是不够的,还需要正确的工具。 工程不仅仅是一门科学,也是一门艺术,所以虽然我们无疑有人才(wink眨眼)Stormpath,我们总是希望补充的工具最适合我们的需要。 我们的工程师总是渴望与团队的其他成员分享的新工具。 现在,所有的其他有才华的Java开发人员!在这篇文章中,我将分享我们的Java SDK团队所使用的工...原创 2018-03-08 22:12:16 · 1559 阅读 · 0 评论 -
面试的信心来源于过硬的基础
在过去的一年很多人不满于公司没有福利、人际关系不好相处、没有发展前途的境遇等等,想着在开年来换一份工作来重新开始自己,那么 你 准备好了吗?下面是本人整理的一份面试材料,本想自己用的,但是新年第一天 公司突然给了我个惊喜,涨工资了!!!1、 viewport<meta name="viewport" content="width=device-width,initial-scale=1.0,...原创 2018-03-06 21:21:26 · 319 阅读 · 0 评论