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

网站搜索排名优化怎么做网站建设好的

网站搜索排名优化怎么做,网站建设好的,长清网站建设费用,腾讯网站认证1 python实现rpc的几种方式 1.1 SimpleXMLRPCServer 自带的 1.2 第三方ZeroRPC 2 连接linux远程开发 3 分布式锁 4 分布式id 1 python实现rpc的几种方式 # 远程过程调用-1 借助于rabbitmq,可以跨语言-2 SimpleXMLRPCServer 自带的-3 ZeroRPC-4 GRPC#xff1a;跨语言的 htt…1 python实现rpc的几种方式 1.1 SimpleXMLRPCServer 自带的 1.2 第三方ZeroRPC 2 连接linux远程开发 3 分布式锁 4 分布式id 1 python实现rpc的几种方式 # 远程过程调用-1 借助于rabbitmq,可以跨语言-2 SimpleXMLRPCServer 自带的-3 ZeroRPC-4 GRPC跨语言的 https://zhuanlan.zhihu.com/p/4257251921.1 SimpleXMLRPCServer 自带的 ### 服务端 from xmlrpc.server import SimpleXMLRPCServer# 通信使用xml格式 class RPCServer(object):def add(self,a,b):return ab# SimpleXMLRPCServer server SimpleXMLRPCServer((localhost, 4242), allow_noneTrue) server.register_introspection_functions() server.register_instance(RPCServer()) server.serve_forever()#### 客户端 import time from xmlrpc.client import ServerProxy# rpc 调用和http什么关系1 rpc 不是一种协议它是一个概念远程过程调用的概念中间通过网络底层可以基于tcp也可以基于http基于tcp自定制协议 2 有的rpc框架用了http协议 2 有的rpc框架直接使用tcp # SimpleXMLRPCServer 底层使用了http协议速度稍微慢一些 def xmlrpc_client():print(xmlrpc client)c ServerProxy(http://localhost:4242)resc.add(3,4)print(通过rpc执行结果是,res)if __name__ __main__:xmlrpc_client()# 速度慢 1 基于http 2 交互使用的xml格式 1.2 第三方ZeroRPC ### 服务端 import zerorpcclass RPCServer(object):def add(self,a,b):print(ab,ab)return ab # zerorpc s zerorpc.Server(RPCServer()) s.bind(tcp://0.0.0.0:4243) s.run()#### 客户端 import zerorpc import time# zerorpc def zerorpc_client():print(zerorpc client)c zerorpc.Client()c.connect(tcp://127.0.0.1:4243)print(c.add(88, 77))if __name__ __main__:zerorpc_client() 2 连接linux远程开发 # 咱么开发的环境-1 win 开发linux上线-2 linux开发Linux上线-乌班图-》台式机--》装乌班图--》乌班图开发-3 mac系统linux上线-mac环境跟linxu很像# 只有win机器没有linux项目要在linux下开发---》远程连接到linux中开发---》解释器用了远程linux的# 使用pycharm远程连接linxu开发-本地代码传到linux-使用linux的解释器运行代码---》配置远端解释器-以后 在本地右键运行实际上等同于连到linux机器执行# win---》远端docker容器中开发 3 分布式锁 # 分布式系统中加锁---》悲观锁-mysql 行锁 性能不高-性能更高的分布式锁# python 线程锁# 分布式锁具备条件 1、在分布式系统环境下一个方法在同一时间只能被一个机器的一个线程执行 2、高可用的获取锁与释放锁 3、高性能的获取锁与释放锁 4、具备可重入特性 5、具备锁失效机制防止死锁 6、具备非阻塞锁特性即没有获取到锁将直接返回获取锁失败# 三种方式实现 基于数据库实现分布式锁---》行锁 基于缓存Redis等实现分布式锁----redis官方提供 基于Zookeeper实现分布式锁分布式协调服务 # pip3 install redlock-py from redlock import Redlock import time dlm Redlock([{host: localhost, port: 6379, db: 0}, ])# 获得锁 my_lock dlm.lock(my_resource_name,1000)# 业务逻辑代码 print(sdfasdf) time.sleep(20)# 释放锁 dlm.unlock(my_lock)# 这个代码可以放在任意的节点上使用的是分布式锁某个节点获取到锁后别的节点获取不到操作数据释放锁后别的节点的线程才能操作数据3.1 自己基于redis实现分布式锁 # redis 分布式锁底层如何实现的SETNX当且仅当key不存在时set一个key为val的字符串返回1若key存在则什么都不做expire超过这个时间锁会自动释放避免死锁deleteRedis实现分布式锁的时候删除锁import redis import uuid import timefrom threading import Thread,get_ident# 连接redis redis_client redis.Redis(hostlocalhost,port6379,# passwordpassword,db10)# 获取一个锁 # lock_name锁定名称 # acquire_time: 客户端等待获取锁的时间 # time_out: 锁的超时时间 def acquire_lock(lock_name, acquire_time10, time_out10):获取一个分布式锁identifier str(uuid.uuid4())end time.time() acquire_timelock string:lock: lock_namewhile time.time() end:if redis_client.setnx(lock, identifier):# 给锁设置超时时间, 防止进程崩溃导致其他进程无法获取锁redis_client.expire(lock, time_out)return identifierelif not redis_client.ttl(lock):redis_client.expire(lock, time_out)time.sleep(0.001)return False# 释放一个锁 def release_lock(lock_name, identifier):通用的锁释放函数lock string:lock: lock_namepip redis_client.pipeline(True)while True:try:pip.watch(lock)lock_value redis_client.get(lock)if not lock_value:return Trueif lock_value.decode() identifier:pip.multi()pip.delete(lock)pip.execute()return Truepip.unwatch()breakexcept redis.excetions.WacthcError:passreturn Falsedef seckill():identifier acquire_lock(resource)print(get_ident(), 获得了锁)release_lock(resource, identifier)if __name__ __main__:for i in range(50):t Thread(targetseckill)t.start() 4 分布式id # 在复杂分布式系统中往往需要对大量的数据和消息进行唯一标识# 分布式id特点全局唯一性不能出现重复的ID号既然是唯一标识这是最基本的要求。 # uuid 趋势递增在MySQL InnoDB引擎中使用的是聚集索引由于多数RDBMS使用B-tree的数据结构来存储索引数据在主键的选择上面我们应该尽量使用有序的主键保证写入性能。单调递增保证下一个ID一定大于上一个ID例如事务版本号、IM增量消息、排序等特殊需求。信息安全如果ID是连续的恶意用户的扒取工作就非常容易做了直接按照顺序下载指定URL即可如果是订单号就更危险了竞对可以直接知道我们一天的单量。所以在一些应用场景下会需要ID无规则、不规则。# 生成分布式锁方案 -uuid import timeimport uuidresuuid.uuid1(2,int(time.time())) # b5503ec0-42ff-11ee-adb4-000000000002print(res)-数据自增性能第-Redis生成ID时间戳incr-snowflake雪花算法方案pysnowflake雪花算法的使用场景就很明确了用于确保全局唯一的id。还有一个从名字无法看出的特点就是还能保证id的自增属性。Snowflake 以 64 bit 来存储组成 ID 的4 个部分 1、最高位占1 bit值固定为 0以保证生成的 ID 为正数 2、中位占 41 bit值为毫秒级时间戳 3、中下位占 10 bit值为工作机器的 ID值的上限为 1024 4、末位占 12 bit值为当前毫秒内生成的不同 ID值的上限为 4096-美团leaf算法
http://www.w-s-a.com/news/931865/

相关文章:

  • 做app的网站有哪些功能广州自适应网站建设
  • 兰州建设网站的网站开源网站建设
  • 深圳网站建设南山指数基金是什么意思
  • 备案中又需要建设网站网站信息组织优化
  • 做网站推广需要什么asp响应式h5网站源码下载
  • 柳州建设网官方网站免费自助建站哪个平台好
  • 论坛网站模板源码下载网站建设与网页设计是什么
  • 跑流量的网站淘宝网站的建设目标是
  • 网站计费系统怎么做九一制作网站
  • 网红营销推广温州seo博客
  • 临沂网站制作定制现在比较流行的软件开发模型
  • 南宁企业建站系统做问卷调查哪个网站好
  • 能打开各种网站的浏览器推荐建设部的网站首页
  • 苏州高端网站建设开发wordpress 删除图片
  • saas网站开发外贸网站设计风格
  • c 手机网站开发湘阴网页定制
  • 阿里云虚拟主机搭建wordpressWordPress优化手机端
  • 湖北长安建设网站衡阳市做网站
  • 灯饰网站建设图片深圳做网站哪家公司好
  • 网站的构造有什么网站做生鲜配送的
  • 怎么在手机上做微电影网站小马厂网站建设
  • 网络广告投放网站中山网
  • 保定网站制作专业网页设计模板html代码运行
  • 中国专利申请网官网杭州seo优化
  • 杭州低价做网站网站系统功能流程图
  • 档案室建设网站名贵中药材初加工平台
  • 怎么做优惠券的网站wordpress加载速度
  • 手机网站 分辨率如何创建网站挣钱
  • 网站建设工作标准做模版网站
  • 免费注册微信网站怎样做天猫网站视频