分布式开发

spring-cloud项目搭建

橙三吉。 提交于 2019-12-06 02:22:14
springCloud项目搭建手册 springcloud应用场景及微服务框架发展趋势 Spring Cloud为开发人员提供了工具,以快速构建分布式系统中的某些常见模式(例如,配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,领导选举,分布式会话,群集状态)。 分布式系统的协调导致样板式样,并且使用Spring Cloud开发人员可以快速站起来实现这些样板的服务和应用程序。 它们可以在任何分布式环境中正常工作,包括开发人员自己的笔记本电脑,裸机数据中心以及Cloud Foundry等托管平台。 来源: https://www.cnblogs.com/wzj-ocat/p/11956809.html

[Java复习] 分布式PRC - Dubbo

北慕城南 提交于 2019-12-06 02:17:18
分布式RPC框架 dubbo常见问题: 1. 问dubbo的工作原理:服务注册,注册中心,服务生产者,消费者,代理通信,负载均衡 2. 问网络通信,序列化: dubbo协议,长连接,NIO,hessian序列化协议 3. 问负载均衡策略,集群容错策略,动态策略:dubbo跑起来后一些功能是如何运转,怎么做复制均衡,怎么做容错,怎么生成动态代理? 4. 问dubbo SPI机制:是否了解SPI机制?如何基于SPI机制对dubbo进行扩展? 5. dubbo服务治理,超时,降级,重试等。 1. 为什么要进行系统拆分? 项目大了,代码多了,很多代码冲突,代码合并维护困难。改一个地方,回归测试工作量很大。 大项目发布上线依赖很多外部东西,发布特别麻烦。 2. 如何进行拆分? 系统拆分需要经过多轮拆分,不可能一次就拆分好了。考虑多少个人维护多少个服务。 3. 拆分后为什么要用 Dubbo, 不用 Dubbo 可以吗? Dubbo 和 Thrift 有什么区别? 可以不用。可以用纯基于Spring MVC,纯http接口相互通信,但是维护成本很高。 Dubbo已经在RPC做得很好了,成熟的RPC框架,本地就是进行接口调用,Dubbo代理调用请求,跟远程网络通信,处理负载均衡,超时重试等等功能。 4. 说一下的 Dubbo 的工作原理?注册中心挂了可以继续通信吗?说说发起一次 RPC 请求的流程

Session分布式共享 = Session + Redis + Nginx

非 Y 不嫁゛ 提交于 2019-12-06 00:21:58
原文: Session分布式共享 = Session + Redis + Nginx 一、 Session 1、 Session 介绍 我相信,搞Web开发的对Session一定再熟悉不过了,所以我就简单的介绍一下。 Session:在计算机中,尤其是在网络应用中,称为“会话控制”。 每个用户(浏览器)首次与web服务器建立连接时,就会产生一个Session,同时服务器会分配一个SessionId给用户的浏览器。我们可以用Fiddler查看cookies中,会看到有一个ASP.Net_SessionId的cookie。大家都知道Http是无状态请求,但是ASP.Net中的Session仿佛又让Http请求变得有状态,其核心就在于这个叫ASP.Net_SessionId的cookie。大家可以想象一下,这个相当于数据库的Key,服务器那边再有个Session内容缓存表,是不是Session的内容就很容易得到了?当然Session不是那么简单,但Session原理不是本文介绍重点,所以请大家自行度娘。 2、又爱又恨的 Session 刚接触程序开发的人一定爱死Session了,因为Session让Http从无状态变成有状态了,页面之间传值、用户相关信息、一些不变的数据、甚至于查出来的DataTable也可以放进去,取值的时候只需要Session[Key]即可,真是方便极了

分布式事务、重复消费、顺序消费

我的未来我决定 提交于 2019-12-05 22:16:19
前言 消息队列 在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在 消息队列 的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸,打败了无数竞争对手,每次都只能看到无数落寞的身影失望的离开,略感愧疚( 请允许我使用一下夸张的修辞手法 )。 于是在一个寂寞难耐的夜晚, 暖男 我痛定思痛,决定开始写 《吊打面试官》 系列,希望能帮助各位读者以后面试势如破竹,对面试官进行360°的反击,吊打问你的面试官,让一同面试的同僚瞠目结舌,疯狂收割大厂Offer! 捞一下 上一期,简单的介绍了一下 消息队列 的基础知识,里面有消息队列的应用场景,以及使用之后可能带来的问题,但是上期没对怎么解决这些问题做回答,因为要控制篇幅嘛(明明是自己觉得MQ写不了多少期,要多怼一期出来!渣男) 咳咳,我们言归正传,没看的朋友去看一下,有助于这期的阅读: 《吊打面试官》系列-消息队列基础 面试开始 一个风度翩翩,穿着格子衬衣的中年男子,拿着一个满是划痕的mac向你走来,看着铮亮的头,心想着肯定是尼玛顶级架构师吧!但是我们看过暖男敖丙的系列,腹有诗书气自华,虚都不虚。 没错小伙子还是我,上次话说一半你就溜了,这次我非得好好的问问你。 好的面试官,因为上次着急,敖丙的系列更新了所以赶回家去看了! 我信你个鬼,我们开始吧,上次说到了消息队列的消息重复消费

zabbix 分布式监控及优化

旧巷老猫 提交于 2019-12-05 11:35:28
1..zabbix分布式监控,模拟多机房实现监控? 1.有多机房时,需要用到proxy 1.网络不通 2.网络延迟 2.当监控的主机较多时,也可以用proxy来缓解压力 1.安装proxy [root@web01 ~]# rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm 2.安装proxy 数据库 yum install zabbix-proxy-mysql mariadb-server -y systemctl start mariadb MariaDB [(none)]> create database zabbix_proxy character set utf8 collate utf8_bin; MariaDB [(none)]> grant all privileges on zabbix_proxy.* to zabbix_proxy@localhost identified by 'zabbix_proxy'; zcat /usr/share/doc/zabbix-proxy-mysql-4.0.14/schema.sql.gz | mysql -uzabbix_proxy -pzabbix_proxy zabbix_proxy

Java-技术专区-技术栈分析辨证方法

僤鯓⒐⒋嵵緔 提交于 2019-12-05 11:12:20
1、好多公司动不动就JVM、高并发、分布式、微服务等等,我没有实际经验。 2、从事Java开发三年了,目前的职位是高级Java工程师,感觉技术和工资都到了瓶颈,对以后的发展方向有些迷茫。 3、加班时间过长,年龄大了,精力严重不够,竞争力远不如年轻程序员了。 4、Java工程师体量庞大,供大于需,导致Java程序员面临更加激烈的竞争。 5、目前做技术管理,薪资25K,但25K基本是天花板了,不甘心。   在我看来,开发三年甚至五六年以上的Java程序员要解决上面的问题无非就是两个层面: 1、技术经验   在技术经验方便,个人感觉你要想有所突破,首先就要形成一套技术体系,从技术的实现原理到技术应用,再到不同技术的优劣比较。因为当前各大公司使用的如火如荼的技术栈,无怪乎那些你已经曾经使用过的东西,只是你需要在这个基础上,让自己更有深度和见解。 2、业务需求能力   在业务需求能力方面,一个公司除了看重技术积累方面,另外还比较注重个人的业务理解和分析能力,如果你在某个领域的业务能力比较强,能够hold住当前的一个业务架构,这样说明你对业务的理解能力是非常到位的。所以在业务方便,首先需要的是结合场景的个人理解,其次是延伸扩展。   裁员并不可怕,没有技术实力才可怕,真正有实力的人不会被埋没。真正有实力的人才能走的更远飞的更高。当你具备这些能力时,你不用担心裁员而是应该考虑我要不要继续留在

分布式事务

怎甘沉沦 提交于 2019-12-05 09:30:46
目录: 1.什么是事务? 2.换个角度看事务 3.Java中的事务 4.啥又是分布式事务? 5.分布式事务的几种实现思路 6.总结 写在前面 在分布式、微服务大行其道的今天,相信大家对这些名词都不会陌生。而说到使用分布式,或者拆分微服务的好处,你肯定能想到一大堆。 比如每个人只需要维护自己单独的服务,没有了以前的各种代码冲突。自己想测试、想发布、想升级,只需要care自己写的代码就OK了,很方便很贴心! 然而事物都有两面性,但是它也同时也会带来的一些问题,今天的文章谈的就是分布式系统架构带来的其中一个棘手的问题: 分布式事务 1、什么是事务? 首先抛出来一个问题:什么是事务? 有人会说事务就是一系列操作,要么同时成功,要么同时失败;然后会从事务的ACID特性(原子性、一致性、隔离性、持久性)展开叙述。 确实如此,事务就是为了保证一系列操作可以正常执行,它必须同时满足ACID特性。 但是今天我们 换个角度思考下,我们不仅要知道what(比如什么是事务),更要知道事务的why(比如为什么会有事务这个概念?事务是为了解决什么问题)。 有时候,换个角度说不定有不一样的收获。 2、换个角度看事务 就像经典的文学作品均来自于生活,却又高于生活,事务的概念同样来自于生活,引入“事务”肯定是为了解决某种问题,不然,谁又愿意干这么无聊的事情呢? 最简单最经典的例子: 银行转账

分布式服务框架之服务化最佳实践

不羁岁月 提交于 2019-12-05 06:07:00
在服务化之前,业务通常都是本地API调用,本地方法调用性能损耗较小。服务化之后,服务提供者和消费者之间采用远程网络通信,增加了额外的性能损耗,业务调用的时延将增大,同时由于网络闪断等原因,分布式调用失败的风险也增大。如果服务框架没有足够的容错能力,业务失败率将会大幅提升。 除了性能、可靠性等问题,跨节点的事务一致性问题、分布式调用带来的故障定界困难、海量微服务运维成本增加等也是分布式服务框架必须要解决的难题。本章节我们将对服务化之后面临的挑战进行分析,并给出解决方案和业务最佳实践。 1. 性能和时延问题 在服务化之前,业务通常都是本地API调用,本地方法调用性能损耗较小。服务化之后,服务提供者和消费者之间采用远程网络通信,增加了额外的性能损耗: 1) 客户端需要对消息进行序列化,主要占用CPU计算资源。 2) 序列化时需要创建二进制数组,耗费JVM堆内存或者堆外内存。 3) 客户端需要将序列化之后的二进制数组发送给服务端,占用网络带宽资源。 4) 服务端读取到码流之后,需要将请求数据报反序列化成请求对象,占用CPU计算资源。 5) 服务端通过反射的方式调用服务提供者实现类,反射本身对性能影响就比较大。 6) 服务端将响应结果序列化,占用CPU计算资源。 7) 服务端将应答码流发送给客户端,占用网络带宽资源。 8) 客户端读取应答码流,反序列化成响应消息,占用CPU资源。

Zookeeper系列(一)

空扰寡人 提交于 2019-12-05 05:28:50
一、ZooKeeper的背景 1.1 认识ZooKeeper ZooKeeper---译名为“动物园管理员”。动物园里当然有好多的动物,游客可以根据动物园提供的向导图到不同的场馆观赏各种类型的动物,而不是像走在原始丛林里,心惊胆颤的被动 物所观赏。为了让各种不同的动物呆在它们应该呆的地方,而不是相互串门,或是相互厮杀,就需要动物园管理员按照动物的各种习性加以分类和管理,这样我们才能更加放心安全的观赏动物。 回到企业级应用系统中,随着信息化水平的不断提高,企业级系统变得越来越庞大臃肿,性能急剧下降,客户抱怨频频。拆分系统是目前我们可选择的解决系统可伸缩性和性能问题的唯一行之有效的方法。但是拆分系统同时也带来了系统的复杂性——各子系统不是孤立存在的,它们彼此之间需要协作和交互,这就是我们常说的分布式系统0。各个子系统就好比动物园里的动物,为了使各个子系统能正常为用户提供统一的服务,必须需要一种机制来进行协调——这就是ZooKeeper(动物园管理员)。 1.2 为什么使用ZooKeeper 我们知道要写一个分布式应用是非常困难的,主要原因就是局部故障。一个消息通过网络在两个节点之间传递时,网络如果发生故障,发送方并不知道接收方是否接收到了这个消息。他可能在网络故障迁就收到了此消息,也坑没有收到,又或者可能接收方的进程死了。发送方了解情况的唯一方法就是再次连接发送方,并向他进行询问

转:TCC分布式事务

柔情痞子 提交于 2019-12-05 04:54:23
FROM: https://www.cnblogs.com/jajian/p/10014145.html 之前网上看到很多写分布式事务的文章,不过大多都是将分布式事务各种技术方案简单介绍一下。很多朋友看了还是不知道分布式事务到底怎么回事,在项目里到底如何使用。 所以这篇文章,就用大白话+手工绘图,并结合一个电商系统的案例实践,来给大家讲清楚到底什么是 TCC 分布式事务。 首先说一下,这里可能会牵扯到一些 Spring Cloud 的原理,如果有不太清楚的同学,可以参考之前的文章: 《拜托,面试请不要再问我Spring Cloud底层原理!》 。 1 | 0 业务场景介绍 咱们先来看看业务场景,假设你现在有一个电商系统,里面有一个支付订单的场景。 那对一个订单支付之后,我们需要做下面的步骤: 更改订单的状态为“已支付” 扣减商品库存 给会员增加积分 创建销售出库单通知仓库发货 这是一系列比较真实的步骤,无论大家有没有做过电商系统,应该都能理解。 2 | 0 进一步思考 好,业务场景有了,现在我们要更进一步,实现一个 TCC 分布式事务的效果。 什么意思呢?也就是说,[1] 订单服务-修改订单状态,[2] 库存服务-扣减库存,[3] 积分服务-增加积分,[4] 仓储服务-创建销售出库单。 上述这几个步骤,要么一起成功,要么一起失败,必须是一个整体性的事务。 举个例子