分布式开发

Redis的“假事务”与分布式锁

怎甘沉沦 提交于 2020-02-25 22:24:39
关注公众号:CoderBuff,回复“redis”获取《Redis5.x入门教程》完整版PDF。 《Redis5.x入门教程》目录 第一章 · 准备工作 第二章 · 数据类型 第三章 · ​命令 第四章 ​· 配置 第五章 · Java客户端(上) 第六章 · 事务 第七章 · 分布式锁 第八章 · Java客户端(下) 第六章 · 事务 我们在学习MySQL的存储殷勤时知道,MySQL中innodb支持事务而myisam不支持事务。而事务具有四个特性: 一致性 原子性 隔离性 持久性 在redis尽管提供了事务相关的命令,但实际上它是一个“假事务”,因为它并不支持回滚,也就是说在redis中一个事务有多个命令执行,并不能保证原子性。所以要使用redis的事务,一定要 慎重 。 Redis中的“假事务”(不保证原子性) 在redis中事务相关的命令一共有以下几个: watch [key1] [key2] :监视一个或多个key,在事务开始之前如果被监视的key有改动,则事务被打断。 multi :标记一个事务的开始。 exec :执行事务。 discard :取消事务的执行。 unwatch :取消监视的key。 正常执行事务 127.0.0.1:6379> multi OK 127.0.0.1:6379> set name kevin QUEUED 127.0.0.1:6379>

GitHub上整理的一些工具

放肆的年华 提交于 2020-02-25 11:50:11
技术站点 Hacker News:非常棒的针对编程的链接聚合网站 Programming reddit:同上 MSDN:微软相关的官方技术集中地,主要是文档类 infoq:企业级应用,关注软件开发领域 OSChina:开源技术社区,开源方面做的不错哦 cnblogs,51cto,csdn:常见的技术社区,各有专长 stackoverflow:IT技术问答网站 GitHub:全球最大的源代码管理平台,很多知名开源项目都在上面,如Linux内核, OpenStack等免费的it电子书: http://it-ebooks.info/ DevStore:开发者服务商店 不错的书籍 人件 人月神话 代码大全2 计算机程序设计艺术 程序员的自我修养 程序员修炼之道 高效能程序员的修炼(成为一名杰出的程序员其实跟写代码没有太大关系) 深入理解计算机系统 软件随想录 算法导论(麻省理工学院出版社) 离线数学及其应用 设计模式 编程之美 黑客与画家 编程珠玑 C++ Prime Effective C++ TCP/IP详解 Unix 编程艺术 《精神分析引论》弗洛伊德 搞定:无压力工作的艺术 平台工具(都是开源的好东东哦) Redmine/Trac:项目管理平台 Jenkins/Jira(非开源):持续集成系统(Apache Continuum,这个是Apache下的CI系统,还没来得及研究)

深入了解分布式.md

落花浮王杯 提交于 2020-02-21 18:57:17
深入了解分布式 分布式事务 分布式事务概念 分布式事务产生的原因 事务的ACID特性 分布式理论 CAP理论 BASE理论 分布式事务的应用场景 常见的分布式事务解决方案 两阶段提交 TCC编程模式 TCC开源框架-tcc-transaction TCC使用关键技术分析 分布式项目使用tcc-transaction框架 发布服务 调用服务 LCN解决方案 参考链接 分布式事务 分布式事务概念 分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。 分布式事务是为了保证不同数据库的数据一致性 分布式事务产生的原因 数据库分库分表 当数据库单表一年产生的数据超过1000W,那么就要考虑分库分表 应用SOA化 所谓的SOA化,就是业务的服务化。现在对整个网站进行拆解,分离除了订单中心、用户中心、库存中心。 事务的ACID特性 原子性(Atomicity) 所谓的原子性就是说,在整个事务中的所有操作,要么全部完成,要么全部不做,没有中间状态。对于事务在执行中发生错误,所有的操作都会被回滚,整个事务就像从没被执行过一样。 一致性(Consistency) 事务的执行必须保证系统的一致性,就拿转账为例,A有500元,B有300元,如果在一个事务里A成功转给B50元,那么不管并发多少,不管发生什么,只要事务执行成功了

GitHub上整理的一些工具

守給你的承諾、 提交于 2020-02-21 14:29:20
GitHub上整理的一些工具 技术站点 Hacker News:非常棒的针对编程的链接聚合网站 Programming reddit:同上 MSDN:微软相关的官方技术集中地,主要是文档类 infoq:企业级应用,关注软件开发领域 OSChina:开源技术社区,开源方面做的不错哦 cnblogs,51cto,csdn:常见的技术社区,各有专长 stackoverflow:IT技术问答网站 GitHub:全球最大的源代码管理平台,很多知名开源项目都在上面,如Linux内核, OpenStack等免费的it电子书: http://it-ebooks.info/ DevStore:开发者服务商店 不错的书籍 人件 人月神话 代码大全2 计算机程序设计艺术 程序员的自我修养 程序员修炼之道 高效能程序员的修炼(成为一名杰出的程序员其实跟写代码没有太大关系) 深入理解计算机系统 软件随想录 算法导论(麻省理工学院出版社) 离线数学及其应用 设计模式 编程之美 黑客与画家 编程珠玑 C++ Prime Effective C++ TCP/IP详解 Unix 编程艺术 《精神分析引论》弗洛伊德 搞定:无压力工作的艺术 平台工具(都是开源的好东东哦) Redmine/Trac:项目管理平台 Jenkins/Jira(非开源):持续集成系统(Apache Continuum

hadoop伪分布式安装

两盒软妹~` 提交于 2020-02-18 08:20:54
hadoop伪分布式安装笔记 参考 https://www.cnblogs.com/zhangyinhua/p/7647686.html https://blog.csdn.net/javastart/article/details/47187733 一、Hadoop的三种运行模式(启动模式) 1.1、单机模式(独立模式)(Local或Standalone Mode)   -默认情况下,Hadoop即处于该模式,用于开发和调式。   -不对配置文件进行修改。   -使用本地文件系统,而不是分布式文件系统。   -Hadoop不会启动NameNode、DataNode、JobTracker、TaskTracker等守护进程,Map()和Reduce()任务作为同一个进程的不同部分来执行的。   -用于对MapReduce程序的逻辑进行调试,确保程序的正确。 1.2、伪分布式模式(Pseudo-Distrubuted Mode)   -Hadoop的守护进程运行在本机机器,模拟一个小规模的集群    -在一台主机模拟多主机。   -Hadoop启动NameNode、DataNode、JobTracker、TaskTracker这些守护进程都在同一台机器上运行,是相互独立的Java进程。   -在这种模式下,Hadoop使用的是分布式文件系统,各个作业也是由JobTraker服务

java进阶路线

旧街凉风 提交于 2020-02-17 06:45:39
第1章 架构师内功心法 1:架构设计原则 Open-Closed Principle开闭原则 Dependence Inversion Principle依赖倒置原则 Simple Responsibility Principle单一职责原则 Interface Segregation Principle接口隔离原则 Law of Demeter 迪米特法则 Liskov Substitution Principle里氏替换原则 Composite/Aggregate Reuse Principle合成复用原则 2:设计模式 为什么要从设计模式开始及工厂模式详解 单例模式及原型模式 深度分析代理模式 委派模式及策略模式 模板模式及适配器模式 装饰者模式及观察者模式 各设计模式总结与对比 第2章 架构师审美观 1:Spring源码 Spring框架的前世今生及系统概述 用300行代码手写提炼Spring的核心原理 Spring源码版本命名及源码下载构建技巧 一步一步手绘SpringIOC容器初始化时序图 用30个类高仿真提炼纯手写Spring框架V2.0 Spring事务传播原理及数据库事务操作原理 基于Spring JDBC手写定制自己的ORM框架 Spring5新特性简述及BATJ经典面试题分析 2:MyBatis源码 MyBatis应用分析与最佳实践

Spring Boot与分布式(分步式、Dubbo/Zookeeper、Spring Boot/Cloud)

只谈情不闲聊 提交于 2020-02-16 22:00:08
一、分布式应用 在分布式系统中,国内常用zookeeper+dubbo组合,而Spring Boot推荐使用全栈的Spring,Spring Boot+Spring Cloud。 分布式系统: 单一应用架构 当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。 垂直应用架构 当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。此时,用于加速前端页面开发的Web框架(MVC)是关键。 分布式服务架构 当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。此时,用于提高业务复用及整合的分布式服务框架(RPC)是关键。 流动计算架构 当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。此时,用于提高机器利用率的资源调度和治理中心(SOA)是关键。 二、Zookeeper和Dubbo ZooKeeper ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。 Dubbo

分布式缓存系统Memcached简介与实践

拟墨画扇 提交于 2020-02-16 09:02:36
缘起: 在数据驱动的web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了数据库负载。缓存是解决这个问题的好办法。但是ASP.NET中的虽然已经可以实现对页面局部进行缓存,但还是不够灵活。此时Memcached或许是你想要的。 Memcached是什么? Memcached是由Danga Interactive开发的,高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。 Memcached能缓存什么? 通过在内存里维护一个统一的巨大的hash表,Memcached能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。 Memcached快么? 非常快。Memcached使用了libevent(如果可以的话,在linux下使用epoll)来均衡任何数量的打开链接,使用非阻塞的网络I/O,对内部对象实现引用计数(因此,针对多样的客户端,对象可以处在多样的状态), 使用自己的页块分配器和哈希表, 因此虚拟内存不会产生碎片并且虚拟内存分配的时间复杂度可以保证为O(1).。 Danga Interactive为提升Danga Interactive的速度研发了Memcached。目前,LiveJournal.com每天已经在向一百万用户提供多达两千万次的页面访问。而这些,是由一个由web服务器和数据库服务器组成的集群完成的

分布式缓存系统Memcached简介与实践 基于 .NET

爱⌒轻易说出口 提交于 2020-02-16 09:01:52
缘起: 在数据驱动的web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了数据库负载。缓存是解决这个问题的好办法。但是ASP.NET中的虽然已经可以实现对页面局部进行缓存,但还是不够灵活。此时Memcached或许是你想要的。 Memcached是什么? Memcached是由Danga Interactive开发的,高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。 Memcached能缓存什么? 通过在内存里维护一个统一的巨大的hash表,Memcached能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。 Memcached快么? 非常快。Memcached使用了libevent(如果可以的话,在linux下使用epoll)来均衡任何数量的打开链接,使用非阻塞的网络I/O,对内部对象实现引用计数(因此,针对多样的客户端,对象可以处在多样的状态), 使用自己的页块分配器和哈希表, 因此虚拟内存不会产生碎片并且虚拟内存分配的时间复杂度可以保证为O(1).。 Danga Interactive为提升Danga Interactive的速度研发了Memcached。目前,LiveJournal.com每天已经在向一百万用户提供多达两千万次的页面访问。而这些,是由一个由web服务器和数据库服务器组成的集群完成的

资深技术面试官教你这样准备 Java 面试

那年仲夏 提交于 2020-02-14 14:14:53
  Java能力和面试能力,这是两个方面的技能,可以这样说,如果不准备,一些大神或许也能通过面试,但能力和工资有可能被低估。再仔细分析下原因,面试中问的问题,虽然在职位介绍里已经给出了范围,但针对每个点,面试官的问题是随机想的,甚至同一个面试官在两场相似的面试里,提的问题也未必一样。   也就是说,如果让面试官自由提问,那么一旦问到你不熟悉的点,你可能就答不上,如果运气不好,再外加上不知道面试引导技巧等因素,真有可能面试官的提问全落在你不熟悉的范围内,这样就非常可惜了。与其这样,还不如事先准备外带面试引导,这样或许你的能力未必行,但你可以尽可能地通过引导展示你的亮点,从而提升面试通过的可能性。在本文里,就将讲述事先准备Java亮点和面试中引导面试官提问的技巧。   根据职位介绍微调简历,这关系到能否有面试机会   虽然这点和本文的主题无关,但如果没有面试机会,那甚至无法展示引导技能,所以还是来啰嗦一下。筛选简历的人,除了会看学历专业等硬条件外,更会看相关经验的商业项目经验,这在职位介绍上一定能体现出来,比如初级开发,一般需要SSM等框架的1年经验,高级开发一般需要3年,再外带些诸如Netty,数据库调优等方面的技能。   如果看到一份简历上,没有明显的相关商业项目经验(学习项目不算),那么这份简历甚至没面试机会,这就是为什么很多初级开发简历大多石沉大海的原因