首页 文章 精选 留言 我的

精选列表

搜索[分布式调度],共10000篇文章
优秀的个人博客,低调大师

分布式监控系统 WGCLOUD,新增支持华为鲲鹏、树莓派等 ARM 处理器监控

WGCLOUD,server端基于springboot开发,agent端使用go编写。支持高并发高性能,核心模块包括:主机监控,ES集群状态监控,CPU监控,CPU温度监控,内存监控,数据监控,docker监控,网络流量监控,服务心跳检测,应用进程管理,磁盘IO监控,系统负载监控,端口监控,日志文件监控,监控告警信息(默认邮件,支持钉钉微信ji'c)推送。 更新说明: 1.此次不是新版本发布更新,若不需要在华为鲲鹏、树莓派等基于ARM处理器下运行agent,则可以忽略下面内容 2.针对v3.2.9版本,增加了一个特制的agent包wgcloud-agent-arm-v3.2.9.tar.gz,解决在华为鲲鹏CPU、树莓派等基于ARM处理器下agent不能启动的问题 3.打开链接http://www.wgstart.com/help/docs1.html,看问题【33】说明,然后下载http://www.wgstart.com/download/3.2.9/wgcloud-agent-arm-v3.2.9.tar.gz即可 码云源码下载:https://gitee.com/wanghouhou/wgcloud GITHUB源码下载:https://github.com/tianshiyeben/wgcloud 安装包下载:http://www.wgstart.com

优秀的个人博客,低调大师

润小云解读鸿蒙OS系列(六):分布式软总线之discovery+COAP全流程

简介 Discovery 是一种基于coap 通信协议的设备发现机制;Coap(Constrained Application Protocol)是一种可以使用在资源受限的物联网设备上,并支持可靠传输的轻量化类web协议。它详细规范定义在 RFC 7252, coap 协议支持IP多播, 即可以同时向多个设备发送请求,鸿蒙OS的设备发现功能也是基于这个特性;用户使用discovery功能时,需要保证发现端设备与被发现端设备在同一个局域网内,并且都能收到对方coap协议报文;目前discovery服务仅支持基于Wi-Fi通信方式的设备发现机制。 代码分析 代码目录结构如下图: Discovery 对外提供PublishService() 接口来实现设备的发现功能,其函数实现解读如下: PublishService主要的代码流程图如下,由于篇幅有限我们本次不做详细的介绍。 被发现端主要是通过PublishService()这个函数发布服务。PublishService()函数的实现在discovery_service.c文件中,我们来看看这个函数的主流程代码; 函数参数三个: moduleName:调用者的模块名称 info:PublishInfo结构体,发布的信息 cb:发布成功或者失败的回调函数 在函数实现中,我们可以看到权限检查,参数检验,信号量创建之类等代码;这里就不做介绍;我们从初始化服务 InitService()函数看, InitCommonManager() 函数主要是调用InitLocalDeviceInfo()给g_deviceInfo结构体初始化; RegisterWifiCallback(WifiEventTrigger)函数将WifiEventTrigger(unsigned int para)函数赋值给全局变量g_wifiCallback 最主要看CoapInit()函数 这里面我们优先分析下CoapInitSocket() 和 CreateCoapListenThread() CoapInitSocket()函数实现如下: 可以看到CoapInitSocket()函数里面其实就是调用了socket()函数创建了socket,然后调用bind()绑定到指定的ip跟port,然后将socket描述符赋值给全局变量g_serverFd。以便后面GetCoapServerSocket()函数调用获取socket描述符。 CreateCoapListenThread() 创建线程接收消息,函数实现如下; CoapReadHandle 接收并处理收到的消息 HandleReadEvent函数实现如下,我们分别看看CoapSocketRecv()、COAP_SoftBusDecode()、PostServiceDiscover()函数; CoapSocketRecv()实现就是调用recvfrom()接收消息。 收到消息放到recvBuffer里面 然后调用COAP_SoftBusDecode()解码收到的消息。解码之后放到decodePacket里面然后调用PostServiceDiscover()函数对接收到的消息进行回应。 PostServiceDiscover()函数代码如下: 其中GetServiceDiscoverInfo(),这个函数可以获取到对端的ip 和remoteUrl。 这里可以获取到设备信息,也就是deviceInfo 结构体成员如下: 获取到这些信息之后我们就可以调用CoapResponseService()函数回复消息了。这里就看看主要的回复消息流程,其他的流程有兴趣可以自己继续钻研。 调用socket()创建socket 并将socket描述符返回跟全局变量g_clientFd,以便后面函数GetCoapClientSocket()获取socket描述符。 调用sendto发送消息。 此文档只是介绍了收发消息的主要流程,其他的细节这里并没有详细介绍。感兴趣的同学可以根据这个主流程继续钻研下其他的功能实现。

优秀的个人博客,低调大师

java版电子商务spring cloud分布式微服务-服务消费者(rest+ribbon)

在微服务架构中,业务都会被拆分成一个独立的服务,服务与服务的通讯是基于http restful的。Spring cloud有两种服务调用方式,一种是ribbon+restTemplate,另一种是feign。在这一篇文章首先讲解下基于ribbon+rest。 一、ribbon简介 ribbon是一个负载均衡客户端,可以很好的控制htt和tcp的一些行为。Feign默认集成了ribbon。 ribbon 已经默认实现了这些配置bean: IClientConfig ribbonClientConfig: DefaultClientConfigImpl IRule ribbonRule: ZoneAvoidanceRule IPing ribbonPing: NoOpPing ServerList ribbonServerList: ConfigurationBasedServerList ServerListFilter ribbonServerListFilter: ZonePreferenceServerListFilter ILoadBalancer ribbonLoadBalancer: ZoneAwareLoadBalancer 二、建一个服务消费者 新建一个spring-boot工程,取名为:service-ribbon;在它的pom.xml继承了父pom文件,并引入了以下依赖: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.forezp</groupId> <artifactId>service-ribbon</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>service-ribbon</name> <description>Demo project for Spring Boot</description> <parent> <groupId>com.forezp</groupId> <artifactId>sc-f-chapter2</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-ribbon</artifactId> </dependency> </dependencies> </project> 在工程的配置文件指定服务的注册中心地址为http://localhost:8761/eureka/,程序名称为 service-ribbon,程序端口为8764。配置文件application.yml如下: eureka: client: serviceUrl: defaultZone: http://localhost:8761/eureka/ server: port: 8764 spring: application: name: service-ribbon 在工程的启动类中,通过@EnableDiscoveryClient向服务中心注册;并且向程序的ioc注入一个bean: restTemplate;并通过@LoadBalanced注解表明这个restRemplate开启负载均衡的功能。 @SpringBootApplication @EnableEurekaClient @EnableDiscoveryClient public class ServiceRibbonApplication { public static void main(String[] args) { SpringApplication.run( ServiceRibbonApplication.class, args ); } @Bean @LoadBalanced RestTemplate restTemplate() { return new RestTemplate(); } } 写一个测试类HelloService,通过之前注入ioc容器的restTemplate来消费service-hi服务的“/hi”接口,在这里我们直接用的程序名替代了具体的url地址,在ribbon中它会根据服务名来选择具体的服务实例,根据服务实例在请求的时候会用具体的url替换掉服务名,代码如下: @Service public class HelloService { @Autowired RestTemplate restTemplate; public String hiService(String name) { return restTemplate.getForObject("http://SERVICE-HI/hi?name="+name,String.class); } } 写一个controller,在controller中用调用HelloService 的方法,代码如下: @RestController public class HelloControler { @Autowired HelloService helloService; @GetMapping(value = "/hi") public String hi(@RequestParam String name) { return helloService.hiService( name ); } } 在浏览器上多次访问http://localhost:8764/hi?name=forezp,浏览器交替显示: //社交电商平台源码请加企鹅求求:一零三八七七四六二六。 hi forezp,i am from port:8762 hi forezp,i am from port:8763 这说明当我们通过调用restTemplate.getForObject(“http://SERVICE-HI/hi?name=”+name,String.class)方法时,已经做了负载均衡,访问了不同的端口的服务实例。

优秀的个人博客,低调大师

2018最新淘宝面试出炉:分布式锁+集群+一致Hash算法+底层技术原理

原文链接: https://blog.csdn.net/SpringJavaMyBatis/article/details/83415696 阿里技术面试回顾: 1.Java基础还是需要掌握牢固,重点会问HashMap等集合类,以及多线程、线程池等。 2.Java AIO BIO NIO等 3.Redis的使用以及最常问的一致hash算法,以及消息队列的异步场景等。 4.各种平时经常使用的开源框架Spring等,从原理到技术细节。 5.高并发场景的技术方案。 6.以及微服务等架构设计。 这些技术范围的面试题目还是需要平时多学习和积累,提前准备充分,面试通过率就会高很多,最后总结了部分阿里Java必考题目用于参考~ 【阿里巴巴面试题目含答案】 1,mysql的三大引擎是啥? mysql常用的引擎有InnoDB,MyISAM,Memory,默认是InnoDB InnoDB:磁盘表,支持事务,支持行级锁,B+Tree索引 ps:优点: 具有良好的ACID特性。适用于高并发,更新操作比较多的表。需要使用事务的表。对自动灾难恢复有要求的表。 缺点:读写效率相对MYISAM比较差。占用的磁盘空间比较大。 mysql的4大特性+4种隔离级别: MyISAM:磁盘表,不支持事务,支持表级锁,B+Tree索引 ps: 优点:占用空间小,处理速度快(相对InnoDB来说) 缺点:不支持事务的完整性和并发性 MEMORY(Heap):内存表,不支持事务,表级锁,Hash索引,不支持Blob,Text大类型 ps: 优点:速度要求快的,临时数据 缺点:丢失以后,对项目整体没有或者负面影响不大的时候。 2,redis的hash算法用的是啥? redis应该是使用一致性hash算法---MurmurHash3 算法,具有低碰撞率优点,google改进的版本cityhash也是redis中用到的哈希算法。 现有的主流的大数据系统都是用的 MurmurHash本身或者改进 3,nosql为啥比sql快? Nosql是非关系型数据库,因为不需要满足关系数据库数据一致性等复杂特性所以速度快; sql是关系型数据库,功能强大,但是效率上有瓶颈 4,什么是索引为啥nosql没索引?nosql有索引滴 索引分为聚簇索引和非聚簇索引两种,聚簇索引是按照数据存放的物理位置为顺序的,而非聚簇索引就不一样了;聚簇索引能提高多行检索的速度,而非聚簇索引对于单行的检索很快。 聚簇索引:有主键时,根据主键创建聚簇索引;没有主键时,会用一个唯一且不为空的索引列做为主键,成为此表的聚簇索引;如果以上两个都不满足那innodb自己创建一个虚拟的聚集索引 非聚簇索引:非聚簇索引都是辅助索引,像复合索引、前缀索引、唯一索引 5,B+树和B树区别? B树的非叶子节点存储实际记录的指针,而B+树的叶子节点存储实际记录的指针 B+树的叶子节点通过指针连起来了, 适合扫描区间和顺序查找。 BATJ面试题目 以下列举22个视频资料。 1,应该怎么封装简历才有BATJ面试机会? 2,HashMap底层执行原理, 3,hashtable和ConcurrentHashMap如何实现线程安全? 4,jvm的内存布局,垃圾回收机制 5,类加载机制里的,双亲委派模型 6,阐述事务的隔离级别和传播属性 7,高并发下,如何做到安全的修改同一行数据? 8,A服务调用B服务多接口,响应时间最短方案; 9,A系统给B系统转100块钱,如何实现? 10,动态代理的几种实现方式及优缺点 11,多线程下读概率远远大于写概率,如何解决并发问题? 12,按线程池内部机制,当提交新任务时,有哪些异常要考虑? 13,@Transaction注解一般写在什么位置?如何控制其回滚? 14,说说Spring的IOC容器初始化流程? 15,说说springboot启动机制 16,Redis高性能的原因大概可以讲一些? 17,你是怎么控制缓存的更新?(被动方式/主动方式/增量/全量)? 18,浅析Http和https的三次握手有什么区别。 19,谈谈Session/cookie机制,如何实现会话跟踪? 20,什么是一致性hash? 21,MQ有可能发生重复消费,如何避免,如何做到幂等? 22,如何做限流策略,令牌桶和漏斗算法的使用场景?

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册