-
10. Dubbo原理解析-Listener & filter
Listener ExporterListener: dubbo在服务暴露(exporter)以及销毁暴露(unexporter)服务的过程中提供了回调窗口,供用户做业务处理。ProtocolListenerWrapper在暴露过程中构建了监听器链 public class ProtocolListenerWrapper implements Protocol { public <T&…- 23
- 0
-
26. Dubbo原理解析-监控
Dubbo发布代码中,自带了一个简易的监控中心实现。对于一般的小业务这个监控中心应该能够满足需求,对于那些大业务量的大公司一般都会有自己的监控中心,更加丰富的功能如常用的报警短信通知等等。这章讲解分析使得读者能够了解一般的监控中心实现,也使得有自己接入监控中心需求的大概知道如何集成自己的监控中心实现。下面我们就以dubbo自带的监控中心开始讲解。 监控中心 1. 监控中心启动,我们先看下du…- 17
- 0
-
初识Dubbo 系列之前传2-Dubbo 架构设计
架构 (#) 节点角色说明: Provider: 暴露服务的服务提供方。 Consumer: 调用远程服务的服务消费方。 Registry: 服务注册与发现的注册中心。 Monitor: 统计服务的调用次调和调用时间的监控中心。 Container: 服务运行容器。 调用关系说明: 服务容器负责启动,加载,运行服务提供者。 服务提供者在启动时,向注册中心注册自己提供的服务。 服务消费者在启动时,向…- 9
- 0
-
tair实现分布式锁
基于tair的分布式锁,在阿里内部技术社区已经有很多讨论了,不过基本上都是基于悲观锁的实现,基本特征是互斥或者阻塞。但实际的业务场景中,并不是所有的地方都需要悲观锁,写冲突很少的场景(例如:员工、门店信息修改),使用乐观锁更为合适。 那么如何设计和使用乐观锁呢?在看具体的代码前需要先对乐观锁的原理有个简单的了解。 乐观锁 乐观锁特点 version,版本控制,是乐观锁的根基。乐观锁并不是真的锁,它…- 94
- 0
-
EF+Redis(StackExchange.Redis)实现分布式锁,自测可行
电商平台 都会有抢购的情况,比如 1元抢购。 而抢购 最重要的 就是库存,很多情况下 库存处理不好,就会出现超卖现象。 本文将用redis为缓存,StackExchange 框架,消息队列方式 实现分布式锁的情况 一,效果 先看效果, 窗体下单 构建高并发情况 开多个控制台应用程序 处理订单 二,配置Redis 1 <Redis.Service> 2 <DbConfig N…- 15
- 0
-
使用redis分布式锁解决spring schedule集群部署重复执行问题
产品需求:要求定时扫描超过10天,对抓中奖品进行处理的游戏记录,系统自动转换成娃娃币,同时在消费明细和消息中心提醒用户。 由于服务都是集群部署,定时任务会在各个服务器上重复执行,轻则浪费服务器资源,重则造成数据紊乱。 quartz定时任务提供了集群方式,但还需为其创建数据库表。spring schedule可以实现简单轻量级的定时任务,但无法保证只执行一次。 通过和架构师探讨得知,可以使用redi…- 15
- 0
-
docker微服务部署之:七、Rancher进行微服务扩容和缩容
docker微服务部署之:六、Rancher管理部署微服务 Rancher有两个特色用起来很方便,那就是扩容和缩容。 一、扩容前的准备工作 为了能直观的查看效果,需要修改下demo_article项目的代码。 修改demo_article项目中ArticleController中的三处代码: 1.注入HttpServletRequest;2在findAll()方法的message参数后面…- 21
- 0
-
Spring Cloud微服务技术栈(五):客户端负载均衡Spring Cloud Ribbon部分源码分析
在第二节《Spring Cloud微服务技术栈(二):搭建高可用Eureka Server、服务注册与发现》,我们搭建服务消费者的时候,使用到了客户端负载均衡,那时候只是在创建RestTemplate对象的代码上加上了@LoadBalanced注解,这么简单的一个步骤就实现了客户端负载均衡的功能,那么它是如何实现的呢?本篇文章将从基础源码出发,来探讨一下客户端负载均衡的原理。 源码分析 为了使客户…- 1
- 0
-
虚拟机Linux安装PostgreSQL,并让宿主机连接
安装PostgreSQL 运行如下命令进行安装: 1sudo apt-get install postgresql 2 3 Linux本地登陆并修改密码 安装完成之后,Linux会自动创建postgres同名账户,用此账号可直接免密登陆PostgreSQL(类似于SQL Server的Windows账号认证方式): 1sudo -u postgres psql 2 3 然后可以用 \passwor…- 50
- 0
-
微服务架构核心(二)- 微服务的利与弊
不知道你有没有这样的感受,新系统在前期调研架构的时候,大家都希望优先选择微服务架构,好像一个系统不是微服务架构就OUT了一样。 但是真正的架构设计,并不是哪个架构流行就选哪个,那是要遵循简单、合适、扩展的原则。 所以在选择微服务架构之前,我们应该仔细衡量它的利与弊,分析微服务架构究竟能为系统带来什么优势,同时又会新增哪些挑战。 利 强模块化边界 模块化一直是软件设计中的一个重要原则,有了模块化,我…- 2
- 0
-
ASP.NET Core微服务之基于IdentityServer建立授权与验证服务(1)
Tip: 此篇已加入.NET Core微服务基础系列文章索引 一、IdentityServer的预备知识 要学习IdentityServer,事先得了解一下基于Token的验证体系,这是一个庞大的主题,涉及到Token,OAuth&OpenID,JWT,协议规范等等等等,园子里已经有很多介绍的文章了,个人觉得solenovex的这一篇文章《学习IdentityServer4的预备知识》言简…- 11
- 0
-
Spring Cloud构建微服务架构:分布式配置中心(高可用与动态刷新)【Dalston版】
高可用问题 传统作法 通常在生产环境,Config Server与服务注册中心一样,我们也需要将其扩展为高可用的集群。在之前实现的config-server基础上来实现高可用非常简单,不需要我们为这些服务端做任何额外的配置,只需要遵守一个配置规则:将所有的Config Server都指向同一个Git仓库,这样所有的配置内容就通过统一的共享文件系统来维护,而客户端在指定Config Server位置…- 12
- 0
-
Spring Cloud构建微服务架构:服务网关(过滤器)【Dalston版】
在前两篇文章:服务网关(基础)、服务网关(路由配置)中,我们了解了Spring Cloud Zuul作为网关所具备的最基本功能:路由。本文我们将具体介绍一下Spring Cloud Zuul的另一项核心功能:过滤器。 过滤器的作用 通过上面所述的两篇我们,我们已经能够实现请求的路由功能,所以我们的微服务应用提供的接口就可以通过统一的API网关入口被客户端访问到了。但是,每个客户端用户请求微服务应用…- 9
- 0
-
阿里巴巴的微服务开源之路
2019独角兽企业重金招聘Python工程师标准>>> 2019阿里云峰会·北京开发者专场 侠之大者,为国为民。 在金庸小说中,郭靖和黄蓉是“侠之大者,为国为民”的典范,他们以布衣之身帮助宋军守护襄阳十余年。 技术的世界里,并无大小之分。 但当一群程序员由服务公司内部转变为社会的程序员,将技术以开源的方式与社区的开发者一同协作、改进和使用时,他们便被赋予了更大的责任和期待。 …- 4
- 0
-
Netty游戏服务器实战开发(11):Spring+mybatis 手写分库分表策略(续)
在大型网络游戏中,传统的游戏服务器无法满足性能上的需求。所以有了分布式和微服务新起,在传统web服务器中,我们保存用户等信息基本都是利用一张单表搞定,但是在游戏服务器中,由于要求比较高,我们不能存在大表操作,即分库分表策略。在以前的文章中有关介绍分库分表的,下面我们来实战一下,首先我们做一个这样的计算。 在博主开源的游戏服务器中有这样一个场景:玩家数据保存到player表中,其中将游戏数据库分为1…- 29
- 0
-
Netty源码分析第6章(解码器)—->第4节: 分隔符解码器
Netty源码分析第六章: 解码器 第四节: 分隔符解码器 基于分隔符解码器DelimiterBasedFrameDecoder, 是按照指定分隔符进行解码的解码器, 通过分隔符, 可以将二进制流拆分成完整的数据包 同样继承了ByteToMessageDecoder并重写了decode方法 我们看其中的一个构造方法: 1public DelimiterBasedFrameD…- 55
- 0
-
Netty源码分析第3章(客户端接入流程)—->第2节: 处理接入事件之handle的创建
Netty源码分析第三章: 客户端接入流程 第二节: 处理接入事件之handle的创建 上一小节我们剖析完成了与channel绑定的ChannelConfig初始化相关的流程, 这一小节继续剖析客户端连接事件的处理 回到上一章NioEventLoop的processSelectedKey ()方法: 1private void processSelectedKey(SelectionK…- 5
- 0
-
[编织消息框架][netty源码分析]7 Unsafe 实现类NioSocketChannelUnsafe职责与实现
Unsafe 是channel的内部接口, 负责跟socket底层打交道。从书写跟命名上看是不公开给开发者使用的,直到最后实现NioSocketChannelUnsafe也没有公开出去 1public interface Channel extends AttributeMap, ChannelOutboundInvoker, Comparable<Channel> { 2 inter…- 8
- 0
-
Netty In Action中文版 – 第四章:Transports(传输)
Netty In Action中文版 - 第四章:Transports(传输) 本章内容 Transports(传输) NIO(non-blocking IO,New IO), OIO(Old IO,blocking IO), Local(本地), Embedded(嵌入式) Use-case(用例) APIs(接口) 网络应用程序一个很重要的工作是传输数据。传输数据的过程不一样取决是使用哪种交通…- 6
- 0
-
Mina、Netty、Twisted一起学(三):TCP消息固定大小的前缀(Header)
在上一篇博文中,有介绍到用换行符分割消息的方法。但是这种方法有个小问题,如果消息中本身就包含换行符,那将会将这条消息分割成两条,结果就不对了。 本文介绍另外一种消息分割方式,即上一篇博文中讲的第2条:use a fixed length header that indicates the length of the body,用一个固定字节数的Header前缀来指定Body的字节数,以此来分割消息…- 11
- 0
-
Java NIO框架Netty教程 (五) 字符串消息收发
了解了Netty的基本概念,开发起来应该会顺手很多。 在“Hello World”代码中,我们只是在完成绑定的时候,在各自的本地打印了简单的信息,并没有客户端和服务端的消息传递。这个肯定是最基本的功能。在上代码之前,先补充一个Netty中重要的概念,ChannelBuffer. ChannelBuffer 
网络数据的基本单位总是字节。Java NIO提供了ByteBuffer作为它的字节容器,但是这个类使用起来过于复杂,而且也有些繁琐。Netty的ByteBuffer替代品是ByteBuf,一个强大的实现,既解决了JDK API的局限性,又为网络应用程序的开发者提供了更好的API。 Netty的数据处理API通过两个组件暴露——abstract class ByteBuf和inte…- 6
- 0
-
ASP.NET Core微服务之基于Steeltoe使用Hystrix熔断保护与监控
Tip: 此篇已加入.NET Core微服务基础系列文章索引 => Steeltoe目录快速导航: 基于Steeltoe使用Spring Cloud Eureka 基于Steeltoe使用Spring Cloud Zuul 基于Steeltoe使用Spring Cloud Hystrix 一、关于Spring Cloud Hystrix 在微服务架构中,我们将系统拆分为很多个服务,各个服务…- 0
- 0
幸运之星正在降临...
点击领取今天的签到奖励!
恭喜!您今天获得了{{mission.data.mission.credit}}积分
我的优惠劵
-
¥优惠劵使用时效:无法使用使用时效:
之前
使用时效:永久有效优惠劵ID:×
没有优惠劵可用!















