
微服务
文章平均质量分 87
Java烂猪皮V
专注于分享Java后端架构核心技术知识点以及最新面试宝典。
展开
-
深入浅出微服务架构:Eureka参数配置项详解
Eureka涉及到的参数配置项数量众多,它的很多功能都是通过参数配置来实现的,了解这些参数的含义有助于我们更好的应用Eureka的各种功能,下面对Eureka的配置项做具体介绍,供大家参考。 Eureka客户端配置 1、RegistryFetchIntervalSeconds 从eureka服务器注册表中获取注册信息的时间间隔(s),默认为30秒 2、InstanceInfoReplicationIntervalSeconds 复制实例变...原创 2021-02-07 00:28:24 · 1428 阅读 · 0 评论 -
深入浅出微服务架构:动态配置中心搭建
在微服务架构中,服务之间有着错综复杂的依赖关系,每个服务都有自己的依赖配置,在运行期间很多配置会根据访问流量等因素进行调整,传统的配置信息处理方式是将配置信息写入xml、.properties等配置文件中,和应用一起打包,每次修改配置信息,都需要重新进行打包,效率极低,动态配置中心就是为了解决这一问题。动态配置中心也是一个微服务,我们把微服务中需要动态配置的配置文件存放在远程git私有仓库上,微服务会去服务器读取配置信息,当我们在本地修改完代码push到git服务器,git服务器端hooks自动检测是否有配原创 2021-02-07 00:24:17 · 452 阅读 · 0 评论 -
深入浅出Spring源码:IOC原理解析(二)
接着上一章节的内容,我们来分析当new一个FileSystemXmlApplicationContext对象的时候,spring到底做了那些事。FileSystemXmlApplicationContext类的内容主要是定义了若干重载的构造方法,核心构造方法如下:/** * Create a new FileSystemXmlApplicationContext with the given parent, * loading the definitions from the g.原创 2021-02-07 00:19:21 · 136 阅读 · 0 评论 -
深入浅出Spring源码:IOC原理解析(一)
IOC(Inversion of Control),即控制反转,意思是将对象的创建和依赖关系交给第三方容器处理,我们要用的时候告诉容器我们需要什么然后直接去拿就行了。举个例子,我们有一个工厂,它生产各种产品,当你需要某个产品,比如你需要一辆汽车,你就告诉工厂你需要一辆汽车,工厂就会直接返回给你一辆汽车,而不需要你自己通过付出劳动来得到这辆汽车,你也不用关心工厂是如何生产这辆汽车。对应到我们的程序中就是,IOC容器会帮我们创建和管理对象,当你告诉容器你需要某个对象时,容器会把这个对象返回给你,而不需要自己去n原创 2021-02-07 00:09:52 · 370 阅读 · 0 评论 -
面试必问,redis高可用原理,哨兵机制详解
一、什么是高可用?1、什么是高可用redis已经实现主从复制了,即使挂了一台或者服务硬盘坏掉,数据存在同步备份。那它还不是高可用吗?当然!不是~高可用的定义一般有以下两个解释:解释1:它与被认为是不间断操作的容错技术有所不同。是目前企业防止核心系统因故障而无法工作的最有效保护手段解释2:高可用一般指服务的冗余,一个服务挂了,可以自动切换到另外一个服务上,不影响客户体验。主要就是当我们服务存在异常的时候,可以自动进行容错或者抵抗异常,从而达到不影响到用户正常使用的一种技术...原创 2020-12-09 23:38:05 · 188 阅读 · 1 评论 -
阿里消息中间件之JMS实践(ActiveMQ)
1、消息中间件作用作为一个消息传递中间层,方便信息发送者和接受者通信。2、消息中间件好处1、信息解耦:信息发送方和接收方通过中间件通信,不需要直接通信。2、异步:消息被中间件处理,发送方和接收方都不用直接通信。3、安全可靠:中间件做的还是很可靠地。。4、横向扩展:支持多信息发送方和接收方5、顺序保证:中间件功能。3、常见消息中间件JMS(Java Message Service):java平台中面...原创 2018-06-19 22:54:37 · 484 阅读 · 0 评论 -
阿里分布式服务框架Dubbo的架构总结
Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色。关于注册中心、协议支持、服务监控等内容,详见后面描述。总...原创 2018-06-25 21:38:11 · 362 阅读 · 0 评论 -
如何优雅的使用MQ-详述功能场景
消息队列(MQ)是一种不同应用程序之间(跨进程)的通信方法。应用程序通过写入和检索出入列队的数据(消息)来通信,而无需通过专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用(Remote Procedure Call. RPC)的技术。排队指的是应用程序通过队列来通信。队列的使用除去了接收和发送应用程序同时执行的...原创 2018-06-09 16:18:23 · 411 阅读 · 0 评论 -
使用并发工具实现 RPC 调用流量控制
前言RPC 服务中,每个服务的容量都是有限的,即资源有限,只能承受住给定的网络请求,所以,在设计 RPC 框架的时候,一定要考虑流量控制这个问题。而 Java 中,实现流量控制有很多中方式,今天说 2 种。Semaphore 实现流控代码:代码中,我们模拟了 100 个线程,每个线程无限调用 RPC。同时使用另一个定时任务,定时更新 Semaphore 可用许可为 100。客户端线程调用时,会尝试...原创 2018-06-08 21:43:11 · 803 阅读 · 0 评论 -
Redis 的 5 个常见应用场景
前言Redis 是一个强大的内存型存储,具有丰富的数据结构,使其可以应用于很多方面,包括作为数据库、缓存、消息队列等等。如果你的印象中Redis只是一个 key-value 存储,那就错过了Redis很多强大的功能,下面就是实际应用场景中5个最普遍的案例。1. 全页面缓存如果你使用的是服务器端内容渲染,你又不想为每个请求重新渲染每个页面,就可以使用 Redis 把常被请求的内容缓存起来,能够大大的...原创 2018-06-08 17:41:47 · 10597 阅读 · 0 评论 -
老生常谈,HashMap的死循环
问题最近的几次面试中,我都问了是否了解HashMap在并发使用时可能发生死循环,导致cpu100%,结果让我很意外,都表示不知道有这样的问题,让我意外的是面试者的工作年限都不短。由于HashMap并非是线程安全的,所以在高并发的情况下必然会出现问题,这是一个普遍的问题,虽然网上分析的文章很多,还是觉得有必须写一篇文章,让关注我公众号的同学能够意识到这个问题,并了解这个死循环是如何产生的。如果是在单...原创 2018-05-31 23:19:48 · 444 阅读 · 0 评论 -
Dubbo原理何源码解析之服务暴露
一、框架设计在官方《Dubbo 用户指南》架构部分,给出了服务调用的整体架构和流程:另外,在官方《Dubbo 开发指南》框架设计部分,给出了整体设计:以及暴露服务时序图:本文将根据以上几张图,分析服务暴露的实现原理,并进行详细的代码跟踪与解析。二、原理和源码解析2.1 标签解析从文章《Dubbo原理和源码解析之标签解析》中我们知道,<dubbo:service> 标签会被解析成 Ser...原创 2018-06-14 21:00:20 · 394 阅读 · 0 评论 -
MySQL-性能优化-优化设计和设计原则
MySQL-性能优化-优化设计和设计原则MySQL性能优化目的如何合理的设计数据库?什么样的数据库设计才能给后期DBA优化提供基石?数据库设计与程序设计的差异?数据库设计早期优化1. 关系明确(理清表之间的关系,可以通过冗余的方式提高效率)2. 节省空间(根据业务经验,设置字段长短)3. 提高效率数据库表开发流程原型=>逐步完善(表的设计也是如此)数据库种类1. 层级数据库(注册表) 如:W...原创 2018-05-30 17:13:03 · 614 阅读 · 0 评论 -
SpringBoot使用RabbitMQ消息队列
RabbitMQ简介AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语...原创 2018-06-19 22:57:11 · 460 阅读 · 0 评论 -
深入理解JVM虚拟机
自动内存管理机制Java虚拟机原理 所谓虚拟机,就是一台虚拟的机器。他是一款软件,用来执行一系列虚拟计算指令,大体上虚拟机可以分为系统虚拟机和程序虚拟机, 大名鼎鼎的Visual Box、Vmare就属于系统虚拟机,他们完全是对物理计算的仿真,提供了一个可以运行完整操作系统的软件平台。 程序虚拟机典型代码就是Java虚拟机,它专门为执行单个计算程序而计算,在Java虚拟机中执行的指令我们成为Jav...原创 2018-06-27 21:53:48 · 407 阅读 · 0 评论 -
Dubbo和Spring Cloud微服务架构
微服务架构是互联网很热门的话题,是互联网技术发展的必然结果。它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。虽然微服务架构没有公认的技术标准和规范或者草案,但业界已经有一些很有影响力的开源微服务架构框架提供了微服务的关键思路,例如Dubbo和Spring Cloud。各大互联网公司也有自研的微服务框架,但其模式都于这二者相差不大。微服务主要的优势如下:...原创 2018-10-23 22:17:13 · 397 阅读 · 0 评论 -
dubbo负载均衡策略及对应源码分析
在集群负载均衡时,Dubbo 提供了多种均衡策略,缺省为 random 随机调用。我们还可以扩展自己的负责均衡策略,前提是你已经从一个小白变成了大牛,嘻嘻1、Random LoadBalance1.1 随机,按权重设置随机概率。1.2 在一个截面上碰撞的概率高,但调用量越大分布越均匀,而且按概率使用权重后也比较均匀,有利于动态调整提供者权重。1.3 源码分析package c...原创 2018-10-25 14:48:06 · 467 阅读 · 0 评论 -
记录一次dubbo项目实战
一、案例说明存在2个系统,A系统和B系统,A系统调用B系统的接口获取数据,用于查询用户列表。 二、环境搭建安装zookeeper,解压(zookeeper-3.4.8.tar.gz)得到如下:然后进入conf将zoo_sample.cfg改名成zoo.cfg。并相关如下内容:该目录为存放数据的目录。然后启动,在bin目录下: 三...原创 2018-10-22 22:27:13 · 637 阅读 · 0 评论 -
微服务架构组件分析
微服务架构组件1. 如何发布和引用服务服务描述:服务调用首先解决的问题就是服务如何对外描述。 常用的服务描述方式包括 RESTful API、XML 配置以及 IDL 文件三种。RESTful API主要被用作 HTTP 或者 HTTPS 协议的接口定义,即使在非微服务架构体系下,也被广泛采用优势: HTTP 协议本身是一个公开的协议,对于服务消费者来说几乎没有学习成本,所以...原创 2018-10-19 21:34:37 · 518 阅读 · 0 评论 -
微服务开发中的数据架构设计
前言微服务是当前非常流行的技术框架,通过服务的小型化、原子化以及分布式架构的弹性伸缩和高可用性,可以实现业务之间的松耦合、业务的灵活调整组合以及系统的高可用性。为业务创新和业务持续提供了一个良好的基础平台。本文包括下面若干内容。1.微服务技术框架中的多层数据架构设计2.数据架构设计中的要点3.要点1:数据易用性4.要点2:主、副数据及数据解耦5.要点3:分库分表6.要点...原创 2018-09-27 20:54:44 · 535 阅读 · 0 评论 -
微服务写的最全的一篇文章
今年有人提出了2018年微服务将疯狂至死,可见微服务的争论从未停止过。在这我将自己对微服务的理解整理了一下,希望对大家有所帮助。 1.什么是微服务 1)一组小的服务(大小没有特别的标准,只要同一团队的工程师理解服务的标识一致即可) 2)独立的进程(java的tomcat,nodejs等) 3)轻量级的通信(不是soap,是http协议) ...原创 2018-09-26 22:19:47 · 828 阅读 · 0 评论 -
通往架构师路上的经验总结
前言:我先介绍一下我的新同事,据说他是美国篮球运动员詹姆斯的死忠粉,公司好多同事都这么叫他James,有8年开发经验的架构师,之前在AL待过,我一听说是AL的,啧啧啧........,就有种莫名的种亲切感,就立马找新同事聊了起来。我们在空余的时间聊了很久,也聊了好多。毕竟之前都在AL待过,感觉话题还是有的。在聊天过程中,我们也聊到了他为什么离开AL,也聊到了他在成为架构师的道路上的辛酸历程,聊过后...原创 2018-07-10 22:13:00 · 368 阅读 · 0 评论 -
MySQL 数据库的高可用性分析
MySQL数据库是目前开源应用最大的关系型数据库,有海量的应用将数据存储在MySQL数据库中。存储数据的安全性和可靠性是生产数据库的关注重点。本文分析了目前采用较多的保障MySQL可用性方案。MySQL ReplicationMySQL Replication是MySQL官方提供的主从同步方案,用于将一个MySQL实例的数据,同步到另一个实例中。Replication为保证数据安全做了重要的保证,...原创 2018-06-20 22:23:49 · 378 阅读 · 0 评论 -
如何设计一个 RPC 系统
RPC是一种方便的网络通信编程模型,由于和编程语言的高度结合,大大减少了处理网络数据的复杂度,让代码可读性也有可观的提高。但是RPC本身的构成却比较复杂,由于受到编程语言、网络模型、使用习惯的约束,有大量的妥协和取舍之处。本文就是通过分析几种流行的RPC实现案例,提供大家在设计RPC系统时的参考。由于RPC底层的网络开发一般和具体使用环境有关,而编程实现手段也非常多样化,但不影响使用者,因此本文基...原创 2018-06-20 22:21:52 · 1066 阅读 · 0 评论 -
MySQL 数据库设计总结
规则1:一般情况可以选择MyISAM存储引擎,如果需要事务支持必须使用InnoDB存储引擎。注意:MyISAM存储引擎 B-tree索引有一个很大的限制:参与一个索引的所有字段的长度之和不能超过1000字节。另外MyISAM数据和索引是分开,而InnoDB的数据存储是按聚簇(cluster)索引有序排列的,主键是默认的聚簇(cluster)索引,因此MyISAM虽然在一般情况下,查询性能比Inno...原创 2018-06-20 22:19:44 · 378 阅读 · 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 · 673 阅读 · 0 评论 -
架构中的战斗机,你是如何在工作中提高Ngixn服务器性能?达到高效
大家好,分享即关爱,我们很乐意和你分享一些新的知识,我们准备了一个 Nginx 的教程,分为三个系列,如果你对 Nginx 有所耳闻,或者想增进 Nginx 方面的经验和理解,那么恭喜你来对地方了。我们会告诉你 Nginx 如何工作及其背后的理念,还有如何优化以加快应用的性能,如何安装启动和保持运行。这个教程有三个部分:基本概念 —— 这部分需要去了解 Nginx 的一些指令和使用场景,继承模型,...原创 2018-05-01 19:24:39 · 311 阅读 · 0 评论 -
资深架构师工作经验总结——要怎样才能够完美的编写高性能的RPC框架
RPC 的主要流程客户端 获取到 UserService 接口的 Refer: userServiceRefer客户端 调用 userServiceRefer.verifyUser(email, pwd)客户端 获取到 请求方法 和 请求数据客户端 把 请求方法 和 请求数据 序列化为 传输数据进行网络传输服务端 获取到 传输数据服务端 反序列化获取到 请求方法 和 请求数据服务端 获取到原创 2018-04-19 15:58:56 · 582 阅读 · 0 评论 -
华为8年架构专家总结:微服务架构中zuul的两种隔离机制实验
ZuulException REJECTED_SEMAPHORE_EXECUTION 是一个最近在性能测试中经常遇到的异常。查询资料发现是因为zuul默认每个路由直接用信号量做隔离,并且默认值是100,也就是当一个路由请求的信号量高于100那么就拒绝服务了,返回500。信号量隔离既然默认值太小,那么就在gateway的配置提高各个路由的信号量再实验。两个路由的信号量分开提高到2000和1000。我...原创 2018-04-13 22:47:21 · 445 阅读 · 0 评论 -
资深架构专家工作总结:分布式的系统核心是什么——日志
什么是日志?日志就是按照时间顺序追加的、完全有序的记录序列,其实就是一种特殊的文件格式,文件是一个字节数组,而这里日志是一个记录数据,只是相对于文件来说,这里每条记录都是按照时间的相对顺序排列的,可以说日志是最简单的一种存储模型,读取一般都是从左到右,例如消息队列,一般是线性写入log文件,消费者顺序从offset开始读取。由于日志本身固有的特性,记录从左向右开始顺序插入,也就意味着左边的原创 2018-04-19 00:23:20 · 566 阅读 · 0 评论 -
那些大工厂里常用到的那些设计模式,你们平常都在用么?
一、设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。其实还有两类:并发型模式和线...原创 2018-04-17 22:56:32 · 439 阅读 · 0 评论 -
前大众点评资深研发专家对Mysql索引的解析与底层数据结构的解刨
1:Mysql索引是什么mysql索引: 是一种帮助mysql高效的获取数据的数据结构,这些数据结构以某种方式引用数据,这种结构就是索引。可简单理解为排好序的快速查找数据结构。如果要查“mysql”这个单词,我们肯定需要定位到m字母,然后从下往下找到y字母,再找到剩下的sql。1.1:索引分类单值索引:一个索引包含1个列 create index idx_XX on table(f1) 一个表可以...原创 2018-04-16 22:52:21 · 336 阅读 · 0 评论 -
资深技术专家总结:架构师要看懂这几本书,还要懂这一套学习方法
1、大型网站技术架构:核心原理与案例分析本书通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计案例,为读者呈现一幅包括技术选型、架构设计、性能优化、Web安全、系统发布、运维监控等在内的大型网站开发全景视图。本书作者李智慧,曾在阿里巴巴担任技术专家,参与阿里巴巴基础技术平台开发和架构设计。2、分布式服务框架原理与实践微服务是...原创 2018-04-15 23:07:31 · 796 阅读 · 0 评论 -
Spring整合Quartz分布式调度
前言为了保证应用的高可用和高并发性,一般都会部署多个节点;对于定时任务,如果每个节点都执行自己的定时任务,一方面耗费了系统资源,另一方面有些任务多次执行,可能引发应用逻辑问题,所以需要一个分布式的调度系统,来协调每个节点执行定时任务。Spring整合QuartzQuartz是一个成熟的任务调度系统,Spring对Quartz做了兼容,方便开发,下面看看具体如何整合:1.Maven依赖文件<d...原创 2018-04-14 22:33:10 · 1517 阅读 · 0 评论 -
2018年微服务架构沿着这5个趋势发展必炸裂
在2017年,DevOps领域中增加了大量的生态系统玩家,那么2018年会有哪些变化呢?本文展望了微服务在2018年可能的5个发展趋势,并对各个趋势进行了详细的介绍。对于DevOps来说,2017年是重要的一年,不仅生态系统玩家的数量大幅增加,而且CNCF项目增加了两倍。展望未来一年,我们期待创新和市场变化进一步加速。以下是我们对2018年微服务趋势的看法:服务网格、事件驱动架构、容器本地安全、G...原创 2018-04-14 22:08:11 · 980 阅读 · 0 评论 -
高可用Redis服务架构分析与搭建
基于内存的Redis应该是目前各种web开发业务中最为常用的key-value数据库了,我们经常在业务中用其存储用户登陆态(Session存储),加速一些热数据的查询(相比较mysql而言,速度有数量级的提升),做简单的消息队列(LPUSH和BRPOP)、订阅发布(PUB/SUB)系统等等。规模比较大的互联网公司,一般都会有专门的团队,将Redis存储以基础服务的形式提供给各个业务调用。不过任何一...原创 2018-04-24 21:33:38 · 318 阅读 · 0 评论 -
分享我如何在7年时间里成长为阿里Java架构师(附学习路线图)
导读:架构师应不应该写代码为什么别人的系统总是那么烂成为架构师最困难的门槛是什么?如何更高效的学习?1.架构师应不应该写代码合格的程序员对于明确分配的任务会完成的很好,但是大部分情况下“架构”这个词意味着架构师并不会涉及太多细节,架构图和代码实现之间总还是有些距离,你无法保证所有人都会正确的理解你的设计,或者是程序员写代码时遇到障碍时会立刻想出足够优雅的解决方案。在我看来,写代码的架构师更像是在做...原创 2018-05-09 22:42:40 · 946 阅读 · 0 评论 -
RabbitMQ进程结构分析与性能调优
RabbitMQ是一个流行的开源消息队列系统,是AMQP(高级消息队列协议)标准的实现,由以高性能、健壮、可伸缩性出名的Erlang语言开发,并继承了这些优点。业界有较多项目使用RabbitMQ,包括OpenStack、Spring、Logstash等。腾讯云在开发云消息队列系统(CMQ)时,对RabbitMQ进行了大量的学习和优化,包括瓶颈分析、内存管理、参数调优等。下文结合Erlang和Rab...原创 2018-06-20 22:10:04 · 761 阅读 · 0 评论 -
MySQL 内核深度优化
MYSQL数据库适用场景广泛,相较于Oracle、DB2性价比更高,Web网站、日志系统、数据仓库等场景都有MYSQL用武之地,但是也存在对于事务性支持不太好(MySQL 5.5版本开始默认引擎才是InnoDB事务型)、存在多个分支、读写效率瓶颈等问题。所以如何用好MYSQL变得至关重要,一方面需要通过MYSQL优化找出系统读写瓶颈,提高数据库性能;另一方面需要合理涉及数据结构、调整参数,以提高用...原创 2018-06-20 22:05:56 · 439 阅读 · 0 评论 -
基于Spring Cloud的微服务落地
微服务架构模式的核心在于如何识别服务的边界,设计出合理的微服务。但如果要将微服务架构运用到生产项目上,并且能够发挥该架构模式的重要作用,则需要微服务框架的支持。在Java生态圈,目前使用较多的微服务框架就是集成了包括Netfilix OSS以及Spring的Spring Cloud。它包括:Spring Cloud Config:配置管理工具,支持使用Git存储配置内容,可以实现应用配置的外部化存...原创 2018-05-29 22:30:25 · 620 阅读 · 0 评论