一、
最近在研究分布式系统,将部分服务拆分出去,只会python,所以用python的zerorpc写服务
二、代码
整个都是从pysnowflake里面复制出来的,pysnowflake可以启动一个http服务,我以前一直都用这个服务的。这里只是将http服务变成rpc服务
import time
from loguru import logger
EPOCH_TIMESTAMP = 550281600000
class Generator(object):
def __init__(self):
self.dc = 1
self.worker = 1
self.node_id = ((self.dc & 0x03) int:
curr_time = int(time.time() * 1000)
if curr_time self.last_timestamp:
self.sequence = 0
self.last_timestamp = curr_time
self.sequence += 1
if self.sequence > 4095:
# the sequence is overload, just wait to next sequ服务器托管网ence
logger.warning('The sequence has been overload')
self.sequence_overload += 1
time.sleep(0.001)
return self.get_next_id()
generated_id = ((curr_time - EPOCH_TIMESTAMP)
import zerorpc
from loguru import logger
from 雪花算法服务.算法 import Generator
class HandleModel():
generator = Generator()
def getID(self):
logge服务器托管网r.info("收到一次RPC请求,返回id")
return str(self.generator.get_next_id())
def get_status(self):
logger.info("收到一次RPC请求,服务状态")
return self.generator.stats
if __name__ == '__main__':
logger.info("准备开启rpc服务")
s = zerorpc.Server(HandleModel())
s.bind(["tcp://0.0.0.0:2441","tcp://0.0.0.0:2442"])
logger.info(f"开启服务,端口是{2441}")
s.run()
结束
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
Span 提供任意内存的连续区域的类型安全和内存安全表示形式。它是在堆栈而不是托管堆上分配的ref结构,是对任意内存块的抽象。 1.关于Span 在NET Core 2.1中首次引入 提供对任意内服务器托管网存上的连续区域的读写视图 利用索引/迭代来修改范围内…