架构
文章平均质量分 93
小码农 TT
这个作者很懒,什么都没留下…
展开
-
面试被问Redis和zk两种分布式锁的对比
一、基于数据库实现分布式锁1. 悲观锁利用select … where … for update排他锁注意: 其他附加功能与实现一基本一致,这里需要注意的是“where name=lock ”,name字段必须要走索引,否则会锁表。有些情况下,比如表不大,mysql优化器会不走这个索引,导致锁表问题。2. 乐观锁所谓乐观锁与前边最大区别在于基于CAS思想,是不具有互斥性,不会产生锁等待而消耗资源,操作过程中认为不存在并发冲突,只有update version失败后才能觉察到。我们的.原创 2021-01-12 00:38:21 · 698 阅读 · 0 评论 -
记一次Consul故障分析与优化
【编者的话】在微服务体系中,服务注册中心是最基础的组件,它的稳定性会直接影响整个服务体系的稳定性。本文主要介绍了爱奇艺微服务平台基于Consul的服务注册中心建设方式,与内部容器平台、API网关的集成情况,并重点记录了Consul遇到的一次故障,分析解决的过程,以及针对这次故障从架构上的优化调整措施。Consul是近几年比较流行的服务发现工具,用于实现分布式系统的服务发现与配置。与其它分布式服务注册与发现的方案相比Consul的方案更“一站式”,使用起来也较 为简单。他的主要应用场景为:服务发现、服务隔离原创 2021-01-12 00:35:43 · 1496 阅读 · 0 评论 -
深入浅出 ZooKeeper
ZooKeeper 是一个分布式协调服务 ,由 Apache 进行维护。ZooKeeper 可以视为一个高可用的文件系统。ZooKeeper 可以用于发布/订阅、负载均衡、命令服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能 。一、ZooKeeper 简介1.1 ZooKeeper 是什么ZooKeeper 是 Apache 的顶级项目。ZooKeeper 为分布式应用提供了高效且可靠的分布式协调服务,提供了诸如统一命名服务、配置管理和分布式锁等分布式的基础服原创 2021-01-12 00:34:07 · 521 阅读 · 0 评论 -
API快速开发平台设计思考
在我之前谈API网关的时候曾经谈到过快速开发平台,即将API快速开发的一些内容放入到API网关中,实际来看围绕API全生命周期管理,本身包括了开发态,运行态,运维态。对于API网关更多的是解决运行态的问题,API网关本身应该轻量化设计,不做太多的协议转换,适配,数据映射等工作,这些工作应该放到API开发平台来完成。API开发平台最终就是开发完成并暴露一个标准的Http API接口,并将接口注册和接入到API网关。API全生命周期管理围绕API全生命周期管理来看,整个子系统划分如下:简单来原创 2021-01-12 00:32:29 · 516 阅读 · 0 评论 -
微服务设计中关于服务组合和可视化编排的思考
这篇文章重新整理下我对服务组合和服务可视化编排的一些思考。从整个服务分层的角度来说,微服务最底层首先提供的是原子服务,再朝上则可以提供更加粗颗粒度的组合服务能力。为何要进行服务组合和编排?简单来说就是进一步将共性的可复用业务能力下沉,这些共性业务能力有些是在前端开发中,开发人员自己进行组合和编排完成的。那么实际这块内容应该下沉到一个统一的领域服务能力提供层。在前后端开发分离的情况下,实际上对于前端人员往往并不熟悉和精通业务,如果是简单的UI界面交互调用多个接口服务,前端来做没有问题。但是对于本身和业原创 2021-01-12 00:28:45 · 1697 阅读 · 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 · 253 阅读 · 0 评论 -
Java内存模型
一、现代计算机内存模型早期的计算机中由于CPU和内存的速度是差不多的,所以CPU是直接访问内存地址的。而在现代计算机中,CPU指令的运行速度远远超过了内存数据的读写速度,为了降低这两者间这高达几个数量级的差距,所以在CPU与主内存之间加入了CPU高速缓存。高速缓存可以很好地解决CPU与主内存之间的速度差距,但CPU缓存并不是所有CPU共享的,因此产生了一个新的问题:数据一致性问题。二、缓存一致性协议(MESI)CPU缓存的一致性问题会导致并发处理的不同步,对于这个问题,大概有以下两种方案原创 2021-01-12 00:17:42 · 863 阅读 · 0 评论 -
够狠 | 单点登录三种方式,够狠!够劲爆!
前言单点登录分为三种机制,这三种机制分别为http无状态协议,会话机制,登录机制等这三种机制。http无状态协议web应用采用browser/server架构,http作为通信协议,http是无状态协议,浏览器的每一次请求,服务器都会独立处理,用如下图进行说明,三次请求和响应之间没有任何关系。即,根据上图可以看到,http的请求是无状态的协议。会话机制浏览器第一次访问请求服务器的时候,服务器再次创建一个会话,并把数据发送给浏览器,浏览器保存会话id,服务器从请求中通过id判断是不是一个原创 2021-01-12 00:13:08 · 422 阅读 · 1 评论 -
如何在面试中介绍自己的项目经验(面向java改进版)
本人于3年前写的博文,如何在面试中介绍自己的项目经验,经过大家的捧场,陆续得到了将近7万个点击量,也得到了众多网站公众号的转载,不过自己感觉,这篇文章更多的是偏重于方法,没有具体给到Java方面相关的说辞。 三年过去了,随着本人面试官经验的积累,也随着技术的进步,本人就用适合当下2021年Java初级开发的面试场景,改写本文。请注意,这篇文章并不是简单的技术升级,也没有机械地教大家在介绍项目经验时背诵若干说辞,而是教大家如何结合项目经验更好地展示自己的技术亮点,这样就能最大程度地提升面试通过的可能..原创 2021-01-12 00:10:36 · 1019 阅读 · 0 评论