自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 面试被问Redis和zk两种分布式锁的对比

一、基于数据库实现分布式锁1. 悲观锁利用select … where … for update排他锁注意: 其他附加功能与实现一基本一致,这里需要注意的是“where name=lock ”,name字段必须要走索引,否则会锁表。有些情况下,比如表不大,mysql优化器会不走这个索引,导致锁表问题。2. 乐观锁所谓乐观锁与前边最大区别在于基于CAS思想,是不具有互斥性,不会产生锁等待而消耗资源,操作过程中认为不存在并发冲突,只有update version失败后才能觉察到。我们的.

2021-01-12 00:38:21 669

原创 记一次Consul故障分析与优化

【编者的话】在微服务体系中,服务注册中心是最基础的组件,它的稳定性会直接影响整个服务体系的稳定性。本文主要介绍了爱奇艺微服务平台基于Consul的服务注册中心建设方式,与内部容器平台、API网关的集成情况,并重点记录了Consul遇到的一次故障,分析解决的过程,以及针对这次故障从架构上的优化调整措施。Consul是近几年比较流行的服务发现工具,用于实现分布式系统的服务发现与配置。与其它分布式服务注册与发现的方案相比Consul的方案更“一站式”,使用起来也较 为简单。他的主要应用场景为:服务发现、服务隔离

2021-01-12 00:35:43 1458

原创 深入浅出 ZooKeeper

ZooKeeper 是一个分布式协调服务 ,由 Apache 进行维护。ZooKeeper 可以视为一个高可用的文件系统。ZooKeeper 可以用于发布/订阅、负载均衡、命令服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能 。一、ZooKeeper 简介1.1 ZooKeeper 是什么ZooKeeper 是 Apache 的顶级项目。ZooKeeper 为分布式应用提供了高效且可靠的分布式协调服务,提供了诸如统一命名服务、配置管理和分布式锁等分布式的基础服

2021-01-12 00:34:07 498

原创 API快速开发平台设计思考

在我之前谈API网关的时候曾经谈到过快速开发平台,即将API快速开发的一些内容放入到API网关中,实际来看围绕API全生命周期管理,本身包括了开发态,运行态,运维态。对于API网关更多的是解决运行态的问题,API网关本身应该轻量化设计,不做太多的协议转换,适配,数据映射等工作,这些工作应该放到API开发平台来完成。API开发平台最终就是开发完成并暴露一个标准的Http API接口,并将接口注册和接入到API网关。API全生命周期管理围绕API全生命周期管理来看,整个子系统划分如下:简单来

2021-01-12 00:32:29 496

原创 作为程序员,你不能忽视的13个CI/CD的好处

在传统的软件开发方法中,每一个小的功能更新或Bug修复都会每隔一段时间分开发布,这极大地增加了变更在部署时被耦合的几率。随着时间推移,问题开始增多,给整个团队带来了更多的挑战。最糟糕的是,所有的流程都是手动的,而且这些产品大多是单独开发/测试的。很显然,它将变得更容易出现人为错误。CI/CD就是解决这一切的东西,使整个流程更加可控和高效。持续集成/持续部署(以下称为CI/CD)是现代软件开发实践中构建、测试和部署应用到生产环境的支柱。CI/CD在弥合开发与各受影响团队之间的差距方面发挥着举足轻重的作用。C

2021-01-12 00:30:34 1547

原创 微服务设计中关于服务组合和可视化编排的思考

这篇文章重新整理下我对服务组合和服务可视化编排的一些思考。从整个服务分层的角度来说,微服务最底层首先提供的是原子服务,再朝上则可以提供更加粗颗粒度的组合服务能力。为何要进行服务组合和编排?简单来说就是进一步将共性的可复用业务能力下沉,这些共性业务能力有些是在前端开发中,开发人员自己进行组合和编排完成的。那么实际这块内容应该下沉到一个统一的领域服务能力提供层。在前后端开发分离的情况下,实际上对于前端人员往往并不熟悉和精通业务,如果是简单的UI界面交互调用多个接口服务,前端来做没有问题。但是对于本身和业

2021-01-12 00:28:45 1648 1

原创 如何创建并运行java线程

Java线程类也是一个object类,它的实例都继承自java.lang.Thread或其子类。可以用如下方式用java中创建一个线程:1 Tread thread =newThread(); 执行该线程可以调用该线程的start()方法:1 thread.start(); 在上面的例子中,我们并没有为线程编写运行代码,因此调用该方法后线程就终止了。编写线程运行时执行的代码有两种方式:一种是创建Thread子类的一个实例并重写run方法,第二种是创建类的时候实现Run...

2021-01-12 00:26:28 233

原创 Java内存模型

一、现代计算机内存模型早期的计算机中由于CPU和内存的速度是差不多的,所以CPU是直接访问内存地址的。而在现代计算机中,CPU指令的运行速度远远超过了内存数据的读写速度,为了降低这两者间这高达几个数量级的差距,所以在CPU与主内存之间加入了CPU高速缓存。高速缓存可以很好地解决CPU与主内存之间的速度差距,但CPU缓存并不是所有CPU共享的,因此产生了一个新的问题:数据一致性问题。二、缓存一致性协议(MESI)CPU缓存的一致性问题会导致并发处理的不同步,对于这个问题,大概有以下两种方案

2021-01-12 00:17:42 845

原创 够狠 | 单点登录三种方式,够狠!够劲爆!

前言单点登录分为三种机制,这三种机制分别为http无状态协议,会话机制,登录机制等这三种机制。http无状态协议web应用采用browser/server架构,http作为通信协议,http是无状态协议,浏览器的每一次请求,服务器都会独立处理,用如下图进行说明,三次请求和响应之间没有任何关系。即,根据上图可以看到,http的请求是无状态的协议。会话机制浏览器第一次访问请求服务器的时候,服务器再次创建一个会话,并把数据发送给浏览器,浏览器保存会话id,服务器从请求中通过id判断是不是一个

2021-01-12 00:13:08 404 1

原创 如何在面试中介绍自己的项目经验(面向java改进版)

本人于3年前写的博文,如何在面试中介绍自己的项目经验,经过大家的捧场,陆续得到了将近7万个点击量,也得到了众多网站公众号的转载,不过自己感觉,这篇文章更多的是偏重于方法,没有具体给到Java方面相关的说辞。 三年过去了,随着本人面试官经验的积累,也随着技术的进步,本人就用适合当下2021年Java初级开发的面试场景,改写本文。请注意,这篇文章并不是简单的技术升级,也没有机械地教大家在介绍项目经验时背诵若干说辞,而是教大家如何结合项目经验更好地展示自己的技术亮点,这样就能最大程度地提升面试通过的可能..

2021-01-12 00:10:36 985

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除