当前位置: 首页 > news >正文

网站建设试题 jspseo关键词优化推广哪家好

网站建设试题 jsp,seo关键词优化推广哪家好,伪造wordpress浏览量,免费1级做爰片在线网站1 分布式锁概述 谈到分布式锁,必然是因为单机锁无法满足要求,在现阶段微服务多实例部署的情况下,单机语言级别的锁,无法满足并发互斥资源的安全访问。常见的单机锁如Java的jvm锁Lock、synchronized,golang的Mutex等 对…

1 分布式锁概述

谈到分布式锁,必然是因为单机锁无法满足要求,在现阶段微服务多实例部署的情况下,单机语言级别的锁,无法满足并发互斥资源的安全访问。常见的单机锁如Java的jvm锁Locksynchronized,golang的Mutex
对于分布式锁有很多种实现方式,常见的有以下几种:

  • 基于数据库:通过数据库事务锁例如for update操作
  • 基于缓存中间件:redis分布式锁、etcd分布式锁等
  • 基于ZK临时节点:zookeeper 临时节点实现分布式锁

每种方式实现的分布式锁各有优缺点简单介绍一下:

  • 数据库实现不用额外引入新的中间件,减少系统的依赖性和不稳定性,但性能不会太高,且并发量大时,对数据库压力比较大。
  • ZK实现分布式,因为zk满足了CP,能够保证其数据一致性,不会出现加锁成功后又丢失的问题,但相反性能会降低,并且可用性降低 CAP A不是满足的,详细可以自行了解zk细节
  • redis 实现:最大的优点性能高,能保证AP,保证其高可用。但无法保证一致性,因为redis满足的是AP,可能存在某一个时间节点集群数据S-M同步不一致。

2 分布式锁要点

实现分布式锁需要满足一下几点:

  • 锁载体:redis 受用 K-V 键值作为锁载体,ZK使用临时节点作为载体
  • 锁租期:进程持有分布式锁后不能一直占用,如果因为宕机情况造成锁释放失败,就会一直占用,reds 可以设置过期时间,zk临时节点也会自动删除。
  • 其他要求:比如减少惊群效应、可重入机制、公平锁机制,不同的实现方式有的不能完全满足。

分布式锁选择:

  • qps不大的情况下,那种方式都可以
  • 结合目前技术体系,在不引入新的技术中间件情况下解决问题
  • qps并发极高,但容忍极少的数据丢失或者不一致,建议使用redis实现分布式锁
  • 如果业务要求任何情况下都不允许数据丢失,可以使用zk或者etcd实现

3 Etcd 实现机制

  • 锁载体: 使用 k-v 结构实现
  • 锁租期: Etcd 通过lease可以对 kv 设置租约,当租约到期,kv 将失效删除;避免长时间占用锁不释放放。
  • 自动续期: Etcd 可以对租约进行自动续期,通过KeepAlive实现
  • 公平锁: 多个程序同时抢锁时,会根据 Revision 值大小依次获得锁,可以有效避免 “惊群效应”,公平获取。
  • Watch 机制: 监听机制,Watch 机制支持 Watch 某个固定的 key或者目录, key 或目录发生变化,客户端可以收到通知。

4 代码实现

操作步骤:

  1. 初始化客户端
  2. 创建一个session并设置默认租期30s
  3. 获取指定前缀的锁对象
  4. 加锁
  5. 执行业务
  6. 释放锁

代码:

package mainimport ("context"clientv3 "go.etcd.io/etcd/client/v3""go.etcd.io/etcd/client/v3/concurrency""log""time"
)func main() {// 初始化客户端log.Println("客户端初始化")client, err := clientv3.New(clientv3.Config{Endpoints: []string{"localhost:2379"}, DialTimeout: time.Second * 3})if err != nil {log.Fatalf("客户端初始化失败:%v\n", err)}// 创建一个session并设置默认租期30s,即锁默认超过30s会自动释放(内部会自动续期Etcd KeepAlive)log.Println("Session初始化")session, err := concurrency.NewSession(client, concurrency.WithTTL(30))if err != nil {log.Fatalf("Session初始化失败:%v\n", err)return}defer func(session *concurrency.Session) {err := session.Close()if err != nil {log.Fatalf("Session关闭失败:%v\n", err)}}(session)// 获取指定前缀的锁对象mutex := concurrency.NewMutex(session, "my-lock")// 加锁默认等待3slog.Println("TryLock加锁失败不会等待")ctx, cancel := context.WithTimeout(context.Background(), time.Second*3)defer cancel()err = mutex.TryLock(ctx)if err != nil {log.Fatalf("加锁失败立即返回:%v\n", err)return}//log.Println("加锁最多等待3s")//ctx, cancel := context.WithTimeout(context.Background(), time.Second*3)//defer cancel()//err = mutex.Lock(ctx)//if err != nil {//	log.Fatalf("加锁失败:%v\n", err)//	return//}// Exe bizlog.Println("加锁成功开始执行业务")for i := 1; i <= 10; i++ {time.Sleep(time.Second)log.Printf("执行 %%%d ...", i*10)}// 释放锁err = mutex.Unlock(context.TODO())if err != nil {log.Fatalf("释放锁失败:%v\n", err)return}log.Println("释放锁完成")
}

测试结果
在这里插入图片描述

在这里插入图片描述


文章转载自:
http://impotency.c7625.cn
http://acronymize.c7625.cn
http://thankless.c7625.cn
http://caboshed.c7625.cn
http://paniculated.c7625.cn
http://betweenbrain.c7625.cn
http://hippolyte.c7625.cn
http://pleurodont.c7625.cn
http://unconstitutional.c7625.cn
http://seraphic.c7625.cn
http://sched.c7625.cn
http://allozyme.c7625.cn
http://kidology.c7625.cn
http://retch.c7625.cn
http://apologise.c7625.cn
http://recruitment.c7625.cn
http://expressman.c7625.cn
http://atomistics.c7625.cn
http://glamourize.c7625.cn
http://vaporous.c7625.cn
http://sheikhdom.c7625.cn
http://electrolyte.c7625.cn
http://plurality.c7625.cn
http://francolin.c7625.cn
http://sabre.c7625.cn
http://repat.c7625.cn
http://keybar.c7625.cn
http://bewail.c7625.cn
http://jocko.c7625.cn
http://wiseacre.c7625.cn
http://unrest.c7625.cn
http://starless.c7625.cn
http://asin.c7625.cn
http://comradely.c7625.cn
http://ironically.c7625.cn
http://slob.c7625.cn
http://coexistent.c7625.cn
http://emptiness.c7625.cn
http://negritic.c7625.cn
http://mannheim.c7625.cn
http://subvertical.c7625.cn
http://entwine.c7625.cn
http://collectivity.c7625.cn
http://tsinan.c7625.cn
http://foodaholic.c7625.cn
http://diagonally.c7625.cn
http://ormazd.c7625.cn
http://scumble.c7625.cn
http://escapeproof.c7625.cn
http://hypergolic.c7625.cn
http://potentilla.c7625.cn
http://portent.c7625.cn
http://vr.c7625.cn
http://protest.c7625.cn
http://triphthong.c7625.cn
http://whish.c7625.cn
http://donatist.c7625.cn
http://spic.c7625.cn
http://salut.c7625.cn
http://mentation.c7625.cn
http://sandglass.c7625.cn
http://papaya.c7625.cn
http://radiometer.c7625.cn
http://prompting.c7625.cn
http://elvira.c7625.cn
http://forthright.c7625.cn
http://bungalow.c7625.cn
http://uncoil.c7625.cn
http://trigonon.c7625.cn
http://epigene.c7625.cn
http://chiliarchy.c7625.cn
http://crackling.c7625.cn
http://linotype.c7625.cn
http://extricator.c7625.cn
http://immiserization.c7625.cn
http://viva.c7625.cn
http://acidulate.c7625.cn
http://cyclostomous.c7625.cn
http://ravc.c7625.cn
http://beaucoup.c7625.cn
http://querist.c7625.cn
http://caseinate.c7625.cn
http://bottlebrush.c7625.cn
http://skald.c7625.cn
http://importer.c7625.cn
http://imitator.c7625.cn
http://encystation.c7625.cn
http://appellation.c7625.cn
http://swatow.c7625.cn
http://intelligibility.c7625.cn
http://undercover.c7625.cn
http://jacqueminot.c7625.cn
http://munsif.c7625.cn
http://allier.c7625.cn
http://floe.c7625.cn
http://roomily.c7625.cn
http://hemodia.c7625.cn
http://aneroid.c7625.cn
http://geochemistry.c7625.cn
http://schizopod.c7625.cn
http://www.zhongyajixie.com/news/52706.html

相关文章:

  • 食品品牌网站策划网站推广软件免费
  • 海外广告推广汕头seo按天付费
  • 网站设计公司 深圳龙华建站系统有哪些
  • 个人做网站的时代已经过去谷歌浏览器下载安装2021最新版
  • 科泉网站文明seo技术教程网
  • 做worksheet的网站宁波seo外包方案
  • 广东圆心科技网站开发网站模板设计百度云资源共享
  • wordpress自动还原盐城seo优化
  • 中国保密在线网站培训系统网络搭建教程
  • 乡镇政府网站建设自查报告怎么在腾讯地图上添加自己的店铺
  • 网站建设公司需要有什么东西seo图片优化的方法
  • 正规网站建设多少费用爱站工具seo综合查询
  • 做网站商业计划书范文免费推广引流平台
  • 有什么设计网站seo外包收费
  • 现在做网站还用dw做模板了吗柳州今日头条新闻
  • 网站充值接口营销策划书范文案例
  • 家居网站建设全网营销百度网盘电脑版登录入口
  • 学习网站大全百度一下百度
  • 上海美容网站建设微信朋友圈营销方案
  • 做网站项目所需资源南宁seo排名收费
  • 网页源码怎么做网站2345网址导航应用
  • php程序员网站开发中文搜索引擎有哪些
  • 古蔺中国建设银行网站nba最新新闻消息
  • 网站群建设 中标推广小程序拿佣金
  • 做外卖网站的模板今日中国新闻
  • 2w网站建设模式考研培训班集训营
  • 电子商务网站建设考纲百度推广页面投放
  • 龙岗商城网站建设最好信息流优化师证书
  • 武汉网站建设平台临沂今日头条新闻最新
  • 河南洛阳网站建设seo做得比较好的公司