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

包头怎样做网站茶网站开发方案

包头怎样做网站,茶网站开发方案,百度提问登陆入口,外贸公司业务流程Rpc异步日志模块作用 在一个大型分布式系统中#xff0c;任何部署的分布式节点都可能发生崩溃#xff0c;试想如果用普通的办法#xff0c;即先排查哪个节点down掉了#xff0c;找到down掉的节点后采取调试工具gdb调试该节点#xff0c;进而排查宕机的原因。这中排查方法…Rpc异步日志模块作用 在一个大型分布式系统中任何部署的分布式节点都可能发生崩溃试想如果用普通的办法即先排查哪个节点down掉了找到down掉的节点后采取调试工具gdb调试该节点进而排查宕机的原因。这中排查方法对于人力物力都是无法接受的。 那么由此记录日志就变得至关重要分布式RPC框架必定存在一个异步日志模块用于记录所有分布式站点的调试信息。通过日志分析就能很容易排查出哪个节点出了问题。 Rpc异步日志模块实现思路 一个日志模块必须是异步的不能影响主程序的运行例如在RPC框架中显然不能阻塞了RPCProvider服务提供者和RPCConsumer服务调用者的运行。 RPCProvider是一个能接受高并发rpc请求的高性能服务器epoll多线程那么存在多个线程同时写日志的情况这里的“写日志”并不是真正意义上的写磁盘文件的操作因为磁盘IO会严重拖累该线程原本执行的其他任务。所以这里的写日志 只是多个线程将日志写入一个异步缓冲队列(这个操作是在内存进行的非常快并且这个队列必须是线程安全的。 此外应该另起一个线程来读取队列里面的日志数据进行真正的磁盘写文件操作这样写日志线程是单独工作的它只是依赖于异步缓冲队列里面的数据不会影响RPC服务线程和其他IO线程。 Rpc异步日志模块实现 下面提供一个简单版本的实现 异步缓冲队列类 #pragma once#include queue #include thread #include mutex #include condition_variable//异步写日志的日志队列 templatetypename T class LockQueue {public://多个work线程都会写日志queuevoid Push(const T data){std::lock_guardstd::mutex lock(m_mutex);m_queue.push(data);m_condvariable.notify_one();}//一个线程读日志queue写日志文件T Pop(){std::unique_lockstd::mutex lock(m_mutex);while(m_queue .empty()){//日志队列为空 线程进入wait状态m_condvariable.wait(lock);}T data m_queue.front();m_queue.pop();return data;} private:std::queueT m_queue;std::mutex m_mutex;std::condition_variable m_condvariable;};Logger.h类 #pragma once#include lockqueue.h #include utility//日志级别 enum LogLevel{INFO 1, //普通信息ERROR //错误信息 };//Mprpc框架提供的日志系统 class Logger { public://获取日志的单例static Logger GetInstance();//写日志void Log(std::pairLogLevel,std::string msg);private:LockQueuestd::pairLogLevel,std::string m_lckQue; //日志缓冲队列Logger();Logger(const Logger) delete;Logger(Logger ) delete;Logger operator(const Logger) delete; };//定义宏 LOG_XXX(xxx %d %s, 20, sdasd); #define LOG_INFO(logmsgformat, ...) \do \{ \Logger logger Logger::GetInstance(); \char c[1024] {0}; \snprintf(c, 1024, logmsgformat, ##__VA_ARGS__); \std::pairLogLevel,std::string pr std::make_pair(INFO, std::string(c)); \logger.Log(pr); \} while (0);#define LOG_ERR(logmsgformat, ...) \ do \ { \Logger logger Logger::GetInstance(); \char c[1024] {0}; \snprintf(c, 1024, logmsgformat, ##__VA_ARGS__); \std::pairLogLevel,std::string pr std::make_pair(ERROR, std::string(c)); \logger.Log(pr); \ } while (0); Logger.cc #include logger.h #include time.h #include iostream//获取日志的单例 Logger Logger::GetInstance() {static Logger logger;return logger; }Logger::Logger() {//启动专门的写日志线程std::thread writeLogTask([](){for(;;){//获取当前的日期然后取日志信息写入相应的日志文件当中 atime_t now time(nullptr);tm *nowtm localtime(now);char file_name[128];sprintf(file_name, %d-%d-%d-log.txt, nowtm-tm_year 1900, nowtm-tm_mon 1, nowtm-tm_mday);FILE* pf fopen(file_name, a);if(pf nullptr){std::coutlogger file file_name open error std::endl;exit(EXIT_FAILURE);}std::pairLogLevel,std::string msg m_lckQue.Pop();char time_buf[128] {0};sprintf(time_buf, %d-%d-%d [%s], nowtm-tm_hour, nowtm-tm_min, nowtm-tm_sec,(msg.first INFO ? info : error));msg.second.insert(0, time_buf);msg.second.append(\n);fputs(msg.second.c_str(), pf);fclose(pf); }});//设置分离线程 守护线程writeLogTask.detach();}//写日志把日志信息写入到lockqueue缓冲区当中 void Logger::Log(std::pairLogLevel,std::string msg) {m_lckQue.Push(msg); }使用 ... LOG_INFO(NotifyService UserService success); LOG_ERR(eeeeeerrror%d, 9999999); LOG_INFO(NotifyService GetFriendListService success); ...查看日志文件cat 2023-8-2-log.txt 21-35-26 [info]NotifyService UserService success 21-35-26 [error]eeeeeerrror9999999 21-35-26 [info]NotifyService GetFriendListService success
http://www.w-s-a.com/news/851038/

相关文章:

  • 免费下载教学设计的网站送网站建设管理信息内容审核制度
  • 外贸专业网站的公司百度旗下13个app
  • 物理组简介 网站建设高师院校语言类课程体系改革与建设 教学成果奖申报网站
  • 爱网站无法登录怎么回事手表网
  • 网站建设公司现在还挣钱吗山西手动网站建设推荐平台
  • 重庆建设工程交易信息网站网站制作公司起名
  • 东莞寮步做网站的有吗企业宣传册制作
  • 做网站的软件是哪个上蔡做网站
  • 前后端分离实现网站开发紧急通知网页升级
  • 河北专业网站建设公司推荐佛山小程序开发平台
  • 网站开发强制开启浏览器极速模式建设网站有什么风险
  • 360全景网站建设常州专业网站建设公司咨询
  • 重庆大渡口网站建设网站增加一体化建设功能的好处
  • 网站开发完整视频网站上传 404
  • 自适应网站做推广北京建设工程招标网
  • 外贸网站设计注意事项网上商城官网入口
  • 正规的营销型网站建设公司微官网是网站吗
  • 南京行业门户网站无锡阿里巴巴做网站
  • 河北省和城乡住房建设厅网站wamp wordpress打不开
  • 在哪个平台做网站比较好自动app优化
  • 有没有能帮人快速网站备案的机构个人学做网站
  • 凌云县 城市建设 网站西安市建网站
  • 织梦xml网站地图公众号公众平台
  • 长春省妇幼网站做四维学校网站系统破解版
  • 安阳免费搭建自己的网站个人网站做商城会怎样
  • 网站建设专家公司排行网站举报有奖平台
  • 程序员不是做网站的公司装修效果全景图
  • 桥东区住房和建设局网站怎么做网上问卷
  • 做期货要看哪些网站伪装的福祉 wordpress
  • 做网站需要多少费用网站建设需要懂什么语言