configServer

mongodb内核源码实现、性能调优、最佳运维实践系列-command命令处理模块源码实现三

梦想的初衷 提交于 2020-12-09 00:20:52
关于作者 前滴滴出行技术专家,现任OPPO文档数据库mongodb负责人,负责oppo千万级峰值TPS/十万亿级数据量文档数据库mongodb内核研发及运维工作,一直专注于分布式缓存、高性能服务端、数据库、中间件等相关研发。后续持续分享《MongoDB内核源码设计、性能优化、最佳运维实践》,Github账号地址: https://github.com/y123456yz 背景 <<transport_layer网络传输层模块源码实现>>中分享了mongodb内核底层网络IO处理相关实现,包括套接字初始化、一个完整mongodb报文的读取、获取到DB数据发送给客户端等。Mongodb支持多种增、删、改、查、聚合处理、cluster处理等操作,每个操作在内核实现中对应一个command,每个command有不同的功能,mongodb内核如何进行command源码处理将是本文分析的重点 此外,mongodb提供了mongostat工具来监控当前集群的各种操作统计。Mongostat监控统计如下图所示: 其中,insert、delete、update、query这四项统计比较好理解,分别对应增、删、改、查。但是,comand、getmore不是很好理解,command代表什么统计?getMore代表什么统计?,这两项相对比较难理解。 此外,通过本文字分析,我们将搞明白这六项统计的具体含义

MongoDB单机, 主从, 分布式部署

拜拜、爱过 提交于 2020-11-24 04:47:38
MongoDB是最易用的NoSQL,比较适合取代MySQL做一些存储,不过不是强一致性的。本文介绍一下MongoDB各种部署方式,并分享一些感受。前两部分“单机部署”和“主从部署”是“分片部署”的基础。 MongoDB单机部署 启动下载来的MongoDB包的bin目录下的mongod.exe即可打开MongoDB服务,可以添加的基本配置是: ./mongod.exe --dbpath ~/db/data --port 127.0.0.1:10000 --logpath ~/db/log 默认的端口是27017。启动的时候必须有一个data目录,让mongod读写数据。写入数据后,data目录里的文件如图: .lock文件如果在下次启动时候还存在,需要删除才能成功启动。"article"和"config"是数据库名字,可以特别注意一下每个文件块的大小(16M, 32M, 64M, 128M)。 MongoDB主从部署 主从配置是MongoDB特色之一,使之具备了容错,故障恢复等性能。主节点要声明"master",从节点们要声明"slave"和"--source"。最简单的主从配置如下: ./mongod.exe --dbpath ~/db/master --port 10000 --master ./mongod.exe --dbpath ~/db/slave --port

Nacos(一):Nacos介绍

橙三吉。 提交于 2020-11-24 03:28:54
前言 6月份阿里开源的Nacos出了1.0.1版本,从去年7月份第一个release版本到现在一直在默默关注 官方的版本规划为:Nacos从0.8.0开始支持生产可用,1.0版本可大规模生产可用,2.0版本接入k8s、SpringCloud、ServiceMesh、ServerLess 公司目前的项目都是Springcloud,由于eureka2.X的断更、以及Nacos面世,所以自然而然最近就进行了一次试水爬坑,虽然过程艰苦,但是最终效果似乎还不错。 本文主要从以下几点来带大家熟悉下Nacos Nacos是什么 Nacos的发展历程 Nacos能做什么 Nacos无缝接入各大生态 Nacos是什么 Nacos是什么?好像没听过,不要紧。那Eureka听说过吧,在SpringCloud中做服务注册中心组件,类似的还有Zookeeper、Consul。 所以Nacos也是一个注册中心组件咯,当然是,不过 它不仅仅是注册中心 。 Nacos也是一个配置中心 ,比如SpringCloud中的Config,将配置文件版本化管理。 那么Nacos到底是什么呢, 总结为官网一句话就是: Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。 Nacos的发展历程

Spring Cloud Config 配置中心

不想你离开。 提交于 2020-11-21 02:16:32
请将远程配置文件的格式写对: 比如使用 *.yml 或者 *.properties yml: testconfig: testvalue properties: testconfig=testvalue 服务器配置文件: 调用config server url后返回的json数据: 红框中为配置正确后解析样子: 否则无法解析! 一、简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。在Spring Cloud中,有分布式配置中心组件spring cloud config ,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库中。在spring cloud config 组件中,分两个角色,一是config server,二是config client。 二、构建Config Server 创建一个spring-boot项目,取名为config-server,pom.xml中引入依赖: <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency> <!--表示为web工程-->

nordic-mesh中应用的代码实现

。_饼干妹妹 提交于 2020-11-04 04:10:31
nordic-mesh中应用的代码实现 Nordic-Mesh遵循SIG-Mesh-Profile中的mesh定义,实现了element、model等概念。 一个应用中包含一个或多个element,element是可以寻址的实体;每个element中包含多个model,model定义了应用的功能。 每个设备在provision阶段,其中的每个element都会获得一个unicast-address;在config阶段,设置每个model的APP-Key等内容,该过程通过configure_model实现。每个model的发布地址只有一个,订阅地址可以有多个。 Provision阶段 provision过程就是先扫描un_provision帧,然后根据UUID选择进行provision的过程,provision就是给未配网节点设置unicast-address、Netkey、IV_Index的过程。 在nordic的示例中,将provisioner相关的接口封装到了provisioner_helper.c(h)中,由以下四个接口函数控制provision过程。 /* 接口初始化 */ void prov_helper_init(mesh_provisioner_init_params_t * p_prov_init_info); /* 开始扫描beacon帧 */ void prov

当有人问你springCloud微架构服务的发展史你可以流利的解答吗?

本秂侑毒 提交于 2020-10-30 16:01:00
前言 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理、服务注册,服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。 系统架构演变概述 在公司业务初创时期,面对的主要问题是如何将一个想法变成实际的软件实现,在这个时候整个软件系统的架构并没有搞得那么复杂,为了快速迭代,整个软件系统就是由 “App+后台服务” 组成,而后台服务也只是从工程角度将应用进行Jar包的拆分。此时软件系统架构如下: 而此时整个软件系统的功能也比较简单,只有基本的用户、订单、支付等功能,并且由于业务流程没有那么复杂,这些功能基本耦合在一起。而随着App的受欢迎程度(作者所在的公司正好处于互联网热点),所以App下载量在2017年迅猛增长,在线注册人数此时也是蹭蹭往上涨。 随着流量的迅猛增长,此时整个后台服务的压力变得非常大,为了抗住压力只能不断的加机器,平行扩展后台服务节点。此时的部署架构如下: 通过这种方式,整个软件系统抗住了一波压力,然而系统往往还是会偶尔出点事故,特别是因为api中的某个接口性能问题导致整个服务不可用,因为这些接口都在一个JVM进程中,虽然此时部署了多个节点,但因为底层数据库、缓存系统都是一套,所以还是会出现一挂全挂的情况。 另一方面,随着业务的快速发展

Spring Cloud Bus:消息总线

試著忘記壹切 提交于 2020-10-14 20:16:15
Spring Cloud Bus:消息总线 SpringBoot实战电商项目mall(20k+star)地址: github.com/macrozheng/… 摘要 Spring Cloud Bus 使用轻量级的消息代理来连接微服务架构中的各个服务,可以将其用于广播状态更改(例如配置中心配置更改)或其他管理指令,本文将对其用法进行详细介绍。 Spring Cloud Bus 简介 我们通常会使用消息代理来构建一个主题,然后把微服务架构中的所有服务都连接到这个主题上去,当我们向该主题发送消息时,所有订阅该主题的服务都会收到消息并进行消费。使用 Spring Cloud Bus 可以方便地构建起这套机制,所以 Spring Cloud Bus 又被称为消息总线。Spring Cloud Bus 配合 Spring Cloud Config 使用可以实现配置的动态刷新。目前 Spring Cloud Bus 支持两种消息代理:RabbitMQ 和 Kafka,下面以 RabbitMQ 为例来演示下使用Spring Cloud Bus 动态刷新配置的功能。 RabbitMQ的安装 安装Erlang,下载地址: erlang.org/download/ot… 安装RabbitMQ,下载地址: dl.bintray.com/rabbitmq/al… 安装完成后

Alibaba SpringCloud手抄本,啃完秒杀面试官

五迷三道 提交于 2020-10-12 04:02:56
作为Java语言的落地微服务框架,Spring Cloud已经在各大企业普遍应用,各大云厂商也支持Spring Cloud微服务框架的云产品。可以说,Spring Cloud微服务框架已经应用到了各大行业之中,并成为Java开发者的必备技能之一, 熟练掌握Spring Cloud是面试者的加分项。Spring Cloud由Spring Cloud社区维护,并且在Pivatol和Nettlix两大公司的推动下飞速发展。随着Eureka的闭源,虽然Netflix OSS等组件进入维护期,不再提供新功能,但SpringCloud微服务框架并没有受到显著影响,而是被越来越多的企业和开发者所接受。阿里巴巴推出的Nacos和Sentinel等组件已经加入Spring Cloud 孵化器项目,未来极有可能替代NetlixOSS,因此Spring Cloud是一个极具生 命力的微服务框架。 今天这份学习笔记来自于Alibaba SpringCloud生态系统,笔记全面涵盖了通过Spring Cloud 构建微服务的相关知识点:微服务架构和Spring Cloud、通过Spring Cloud 构建微服务的准备工作、以案例为切入点,讲解了通过Spring Cloud构建微服务的基础组件,包括Eureka、Ribbon、 Feign、Hystrix、Zul、Gateway、Consul、Config

Spring Cloud 系列之 Config 配置中心(三)

a 夏天 提交于 2020-10-04 03:56:26
本篇文章为系列文章,未读前几集的同学请猛戳这里: Spring Cloud 系列之 Config 配置中心(一) Spring Cloud 系列之 Config 配置中心(二) 本篇文章讲解 Config 如何实现配置中心加解密,配置中心用户安全认证。    配置中心加解密      考虑这样一个问题:所有的配置文件都存储在 Git 远程仓库,配置文件中的一些信息又是比较敏感的。所以,我们需要对这些敏感信息进行加密处理。主要的加密方法分为两种:一种是共享密钥加密(对称密钥加密),一种是公开密钥加密(非对称密钥加密)。    对称加解密 Symmetric encryption      对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key)。    检查加密环境      点击链接观看: 检查加密环境视频 (获取更多请关注公众号「哈喽沃德先生」) 版本问题      访问 Config Server: http://localhost:8888/encrypt/status   检查结果如果是: {"description":"No key was installed for encryption service","status":"NO_KEY"} 说明没有为加密服务安装密钥

Mongodb的集群

时间秒杀一切 提交于 2020-09-30 10:53:54
序言 Mongodb的集群环境,的工作原理简单梳理下.当然也是站在别人的肩膀上 (多人的肩膀上) .做一个我认为比较好的梳理. 原理是个很重要的东西,可以帮助你解决 你不知道你不知道的问题 . 同时也帮助你去理解.cuiyaonan2000@163.com 参考文章: https://blog.csdn.net/wang1144/article/details/53964999 https://www.jianshu.com/p/2825a66d6aed http://c.biancheng.net/view/6567.html https://blog.csdn.net/zhangcongyi420/article/details/92738646 Master-Slaver(主重模式) 主(Master): 可读可写,当数据有修改的时候,会将oplog同步到所有连接的salve上去。 从(Slave): 只读不可写,自动从Master同步数据。 对于Mongodb来说,并不推荐使用Master-Slave架构,因为Master-Slave其中Master宕机后不能自动恢复. ( 只能人工介入,指定新的主节点,从节点不会自动升级为主节点。同时,在这段时间内, 该集群架构只能处于只读状态。 ) Master-Slave不支持链式结构,Slave只能直接连接Master。