-
微服务架构核心技术七
简洁的服务分层方式 外部设备(PC,无线端,第三方接入)平台上. SOA分为两层,底下一层为基础服务(核心领域服务、公共服务、中间层服务),向上提供业务能力.第二层为聚合服务(适配服务、边界服务),低层服务比较通用,对不同的外部接入做一些适配、聚合裁剪工作.比如适配移动端和PC端,需要将几个服务进行聚合.这是逻辑性划分,不是物理性划分- 6
- 0
-
微服务架构核心(一)- 什么是微服务
微服务是目前互联网公司最常用的架构,与传统单体架构相比,微服务架构更加适应互联网快速、灵活的特点,接下来的系列文章我会逐一介绍微服务架构的核心知识点。 第一篇我们先来了解什么是微服务。 微服务的特点 微服务最经典的定义是Martinfowler老爷子在2014年的一篇文章中介绍的,原文如下: the microservice architectural style is an approach t…- 8
- 0
-
微服务架构核心技术十一
微服务API服务网关——开源网关Zuul doc: github Zuul spring cloud中对Zuul做了支持,感兴趣的可以去了解java spring家族 图示: servlet运行在tomcat容器中–>http请求会传递给zuulFilter Runer(管理zuul内部的所有过滤器,分为三个层次:前置路由过滤器、路由过滤器、后置路由过滤器)–>请求过来经过前置路由过滤…- 8
- 0
-
Spring Cloud构建微服务架构:消息驱动的微服务(消费组)【Dalston版】
通过之前的《消息驱动的微服务(入门)》一文,相信很多朋友已经对Spring Cloud Stream有了一个初步的认识。但是,对于《消息驱动的微服务(核心概念)》一文中提到的一些核心概念可能还有些迷糊,下面我们将详细的来学习一下这些概念。本文我们就来学习和使用一下“消费组”这一概念。 使用消费组实现消息消费的负载均衡 通常在生产环境,我们的每个服务都不会以单节点的方式运行在生产环境,当同一个服务启…- 5
- 0
-
Spring Cloud构建微服务架构:服务消费(Ribbon)【Dalston版】
通过上一篇《Spring Cloud构建微服务架构:服务消费(基础)》,我们已经学会如何通过LoadBalancerClient接口来获取某个服务的具体实例,并根据实例信息来发起服务接口消费请求。但是这样的做法需要我们手工的去编写服务选取、链接拼接等繁琐的工作,对于开发人员来说非常的不友好。所以,下来我们看看Spring Cloud中针对客户端负载均衡的工具包:Spring Cloud Ribbo…- 0
- 0
-
ASP.NET Core微服务之基于Consul实现服务治理(3)
一、示例整体架构 此示例会由一个API Gateway, 一个Consul Client以及三个Consul Server组成,有关Consul的Client和Server这两种模式的Agent的背景知识,请移步我之前的文章加以了解:《.NET Core微服务之基于Consul实现服务治理》。其中,Consul的Client和Server节点共同构成一个Data Center,而API Gatew…- 7
- 0
-
Netty源码分析第8章(高性能工具类FastThreadLocal和Recycler)—->第6节: 异线程回收对象…
Netty源码分析第8章(高性能工具类FastThreadLocal和Recycler)---->第6节: 异线程回收对象 Netty源码分析第八章: 高性能工具类FastThreadLocal和Recycler 第六节: 异线程回收对象 异线程回收对象, 就是创建对象和回收对象不在同一条线程的情况下, 对象回收的逻辑 我们之前小节简单介绍过, 异线程回收对象, 是不会放在当前线…- 1
- 0
-
Netty源码分析第4章(pipeline)—->第3节: handler的删除
Netty源码分析第四章: pipeline 第三节: handler的删除 上一小节我们学习了添加handler的逻辑操作, 这一小节我们学习删除handler的相关逻辑 如果用户在业务逻辑中进行ctx.pipeline().remove(this)这样的写法, 或者ch.pipeline().remove(new SimpleHandler())这样的写法, 则就是对han…- 4
- 0
-
Netty源码分析第2章(NioEventLoop)—->第7节: 处理IO事件
Netty源码分析第二章: NioEventLoop ** ** 第七节:处理IO事件 上一小节我们了解了执行select()操作的相关逻辑, 这一小节我们继续学习select()之后, 轮询到io事件的相关逻辑: 回到NioEventLoop的run()方法: 1protected void run() { 2 for (;;) { 3 try { 4 switch (selectS…- 9
- 0
-
Netty源码分析第2章(NioEventLoop)—->第1节: NioEventLoopGroup之创建线程执行器
Netty源码分析第二章: NioEventLoop 概述: 通过上一章的学习, 我们了解了Server启动的大致流程, 有很多组件与模块并没有细讲, 从这个章开始, 我们开始详细剖析netty的各个组件, 并结合启动流程, 将这些组件的使用场景及流程进行一个详细的说明 这一章主要学习NioEventLoop相关的知识, 何为NioEventLoop? Ni…- 6
- 0
-
Netty In Action中文版 – 第七章:编解码器Codec
Netty In Action中文版 - 第七章:编解码器Codec 本章介绍 Codec,编解码器 Decoder,解码器 Encoder,编码器 Netty提供了编解码器框架,使得编写自定义的编解码器很容易,并且也很容易重用和封装。本章讨论Netty的编解码器框架以及使用。 7.1 编解码器Codec 编写一个网络应用程序需要实现某种编解码器,编解码器的作用就是讲原始字节数据与…- 3
- 0
-
使用Netty进行文件传输
一、简介 使用Netty进行文件传输主要涉及到FileChannel文件通道,它用来连接文件,可以通过这个通道读写文件。在使用FileChannel之前必须先打开它,FileChannel无法直接打开,可以通过InputStream、OutputStream或RandomAccessFile来获取FileChannel实例,比如: 1RandomAccessFile file=new Random…- 312
- 0
-
通俗地讲,Netty 能做什么?
https://www.zhihu.com/question/24322387/answer/78947405 作者:郭无心 链接:https://www.zhihu.com/question/24322387/answer/78947405 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 Netty是什么? 1)本质:JBoss做的一个Jar包 2)目的…- 7
- 0
-
Netty零拷贝机制
Netty零拷贝机制 Netty自己的ByteBuf JDK ByteBuffer的缺点: ByteBuf做了那些增强 ByteBuf操作 ByteBuf动态扩容原理 选择合适的ByteBuf实现 Unsafe的实现 PooledByteBuf对象、内存复用 零拷贝机制 Netty自己的ByteBuf ByteBuf是为解决ByteBuffer的问题和满足网络应用程序开发人员的日常需求儿设计的。 …- 11
- 0
-
基于Dubbo框架构建分布式服务
Dubbo是Alibaba开源的分布式服务框架,我们可以非常容易地通过Dubbo来构建分布式服务,并根据自己实际业务应用场景来选择合适的集群容错模式,这个对于很多应用都是迫切希望的,只需要通过简单的配置就能够实现分布式服务调用,也就是说服务提供方(Provider)发布的服务可以天然就是集群服务,比如,在实时性要求很高的应用场景下,可能希望来自消费方(Consumer)的调用响应时间最短,只需要选…- 0
- 0
-
RabbitMQ VS Apache Kafka (九)—— RabbitMQ集群的分区容错性与高可用性
本章,我们讨论有关RabbitMQ的容错性,消息一致性及高可用性。RabbitMQ可以作为集群节点来运行,因此RabbitMQ通常被归为分布式消息系统,对于分布式消息系统,我们的关注点通常是一致性与可用性。 我们为什么要讨论分布式系统的一致性与可用性,本质在于两者描述的是系统在失败的情况下表现如何。在实际应用中,网络连接失败、服务器宕机,硬盘损坏,服务器由于GC暂时不可用,网络连接丢失或速度慢,所…- 9
- 0
-
RabbitMQ VS Apache Kafka (一)—— RabbitMQ简介
在接下来的系列章节中,我们将探讨两种消息中间件RabbitMQ与Apache Kafka,从设计的角度来看,作为两种不同的消息中间件,各自都有自己的技术考究,也都有一定的优缺点。本章,我们将不会去评判孰优孰劣,而是作为接下来本系列的引言或者入门。 RabbitMQ RabbitMQ是一个分布式的消息队列系统。之所以说是分布式,因为它通常作为节点集群运行,这其中队列分布在节点上,并可选择复制以实现分…- 8
- 0
-
Kafka的Log存储解析
引言 Kafka中的Message是以topic为基本单位组织的,不同的topic之间是相互独立的。每个topic又可以分成几个不同的partition(每个topic有几个partition是在创建topic时指定的),每个partition存储一部分Message。借用官方的一张图,可以直观地看到topic和partition的关系。 partition是以文件的形式存储在文件系统中,比如,创…- 7
- 0
-
Kafka+Spark Streaming+Redis实时计算整合实践
基于Spark通用计算平台,可以很好地扩展各种计算类型的应用,尤其是Spark提供了内建的计算库支持,像Spark Streaming、Spark SQL、MLlib、GraphX,这些内建库都提供了高级抽象,可以用非常简洁的代码实现复杂的计算逻辑、这也得益于Scala编程语言的简洁性。这里,我们基于1.3.0版本的Spark搭建了计算平台,实现基于Spark Streaming的实时计算。 我们…- 14
- 0
-
Java使用RabbitMQ(四)–消息持久化
消息持久化 消息确认,保证了消费者die时,消息不丢失。 而消息持久化,则是为了保证RabbitMQ 怠机时,消息不丢失。 消息持久化需要以下操作: 1boolean durable = true; 2channel.queueDeclare("hello", durable, false, false, null); 3 需要注意的是,RabbitMQ不允许修改已经定义过的队…- 12
- 0
-
C# 操作rabbitmq(四)
此篇介绍rabbitmq的Topic 一、 虽然Routing可以让我们用更适合于工作业务的方式操作消息队列,但还是存在一定的局限性,例如不能同时适应多个,比如我们不仅想要监听来自cron的错误消息,也要坚定kern的消息,而Topic类型的exchange可以解决这个问题。 二、 Topic exchange topic exchange 发送的消息,routing-key不能是任意的,必须是一…- 8
- 0
-
AMQP-RabbitMQ/3/发布订阅模式
3. 发布订阅模式 Publish/Subscribe - 全集监听fanout 一次向多个消费者发送消息 图示 个人理解 生产者定义Exchange,同时将Exchange的类型定义为fanout,并向该Exchange发送消息。 消费者定义队列Queue,并将队列与该交换机进行绑定。之后交换机付负责将消息全量推送给每一个与之绑定的Queue **RabbitMQ中消息传递模型的核心思想是生产者…- 11
- 0
-
基于Python语言使用RabbitMQ消息队列(五)
Topics 在前面教程中我们改进了日志系统,相比较于使用fanout类型交易所只能傻瓜一样地广播,我们用direct获得了选择性接收日志的能力。 虽然使用direct类型交易所改进了我们的系统,但它仍然有所限制——它不能做基于多重条件(multiple criteria)的路由。 在日志系统中我们可能不只是想要基于严重级别来订阅日志。也想要基于产生日志的来源。你可能从unix的系统日志工具(sy…- 2
- 0
幸运之星正在降临...
点击领取今天的签到奖励!
恭喜!您今天获得了{{mission.data.mission.credit}}积分
我的优惠劵
-
¥优惠劵使用时效:无法使用使用时效:
之前
使用时效:永久有效优惠劵ID:×
没有优惠劵可用!

















