自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 zookeeper分布式锁从零实践与源码解析

现今服务大都是集群部署,使用操作系统锁或基于AQS的JUC并发工具,不能满足`跨JVM`线程同步的需求。本文从中间件安装开始,以抢购商品为例,实现一个`zk`分布式锁。## 一、实现方式对比分布式锁常见实现有如下三种:- 数据库,基于唯一索引- `redis`,基于原子命令与`lua`脚本- `zookeeper`,基于临时顺序节点我们选择zk实现的原因如下:- `mysql`实现锁依赖IO,性能过低- `redis`主从部署存在数据同步问题- 实现`redLock`资源占用高、性能较低

2022-05-06 09:45:33 549

原创 线程安全的单例模式与并发模拟测试

## 一、单例模式实现这里我们通过**懒汉模式**与**Double Check**实现线程安全的单例模式,代码如下:```public class Singleton { // 定义无参构造器 private Singleton(){} // volatile保证多个线程从主存访问 private static volatile Singleton singleton; public static Singleton getInstance(){ ...

2022-05-06 09:44:52 308

原创 生产实践—线程池与异步任务编排

现今的我们使用的服务器,大都是**多处理器多核**配置,资源充足。为**充分利用服务器性能**,**解耦调用线程与异步线程**,**提升响应速度**,使用**并发编程**成为了我们较好的选择。本文将就`JDK`提供的**线程池**,以文件上传的示例讲解线程池的打开方式。## **一、线程池介绍**JDK中提供的线程池核心实现类是`ThreadPoolExecutor`,使用***IDEA show Diagrams***查看类继承关系如下:![1649818738(1).png](https://p

2022-05-06 09:44:19 240

原创 物理服务器配置与基于KVM的虚拟化

目前我们大多数资源(包含生产、测试)均部署在云服务器上,成本较高,为有效节约成本,测试服务拟部署在物理服务上。本文将针对内部物理机,进行网络配置与基于**KVM**的虚拟化,便于测试服务的迁移。## **一、基础准备**- 戴尔(DELL)机架式R740服务器主机,其他服务器也可- CentOS7.x系统## **二、网络配置**- 登陆服务器- 进入`/etc/sysconfig/network-scripts`目录,- 我们`ls`看一下: ![152a990f5804a28..

2022-05-06 09:43:05 606

原创 内存溢出(OOM)问题排查

本文将模拟一个内存溢出环境,重现生产服务器排查过程。## 一、环境搭建1. 使用SpringBoot应用进行模拟,代码如下:```...@RequestMapping("/oom/creation")public void createOOM() { List<OOMObject> oomList = new ArrayList<>(); for (;;){ oomList.add(new OOMObject()); }}``...

2022-05-06 09:40:27 1997

原创 高可用实践—负载均衡与Keepalived+VIP

在互联网时代的早期,计算机普及程度较低,业务简单,并发量相对较小,单体应用常常足以支撑业务量。随着互联网红利来临,并发量的增大,也对单体服务提出了较大的挑战,常见的解决方式是**增加服务器性能**(磁盘、内存、CPU),**集群部署**等。但单机并不能无限制增加资源且利用率会大幅度下降,集群部署需要前置的网关进行路由,网关层仍旧需要处理高并发与单点问题。本文将就`Nginx`反向代理服务器讲解网关层(流量网关,非应用网关,如`springcloud gateway`等)的**负载均衡算法**与基于**Kee

2022-05-06 09:38:09 2974

原创 EdgeX Foundry第五弹 导出数据到MQTT和HTTP服务

本文为Edgex系列第五篇文章,本篇文章将介绍如何把之前接入的设备数据导出到我们的MQTT或者HTTP设备进行使用。一、导出数据到MQTT服务我们还是进入到edgex-compose项目,并点击compose-builder,拖动滚动条到Pull,可以看到我们可以根据选择自定义组合需要的服务,MQTT导出服务这里,我们选择asc-mqtt接下来跟前面一样进入compose-builder目录执行make asc-mqtt no-secty,我们将asc-mqtt的内容复制到我们之前的do

2022-04-07 19:46:10 2947

原创 EdgeX Foundry第四弹 接入MQTT设备

本文为Edgex系列第四篇文章,本次我们从零开始接入一个MQTT虚拟设备,体验一个完整的接入流程,并使用相关服务API进行调用。一、整体架构js脚本作MQTT Device;mosquitto作代理,类似于MQ的broker;client使用EdgeX内置的device-mqtt-go模块,当然这里我们也可以基于EdgeX的SDK进行自定义开发。MQTT Device simulation发布DataTopic和ResponseTopic,接受来自CommandTopic的请求。一、准备设备

2022-04-07 19:43:51 2202

原创 EdgeX Foundry第三弹 接入Virtual Service

本文为Edgex系列第三篇文章,本篇将对接EdgeX内部自带的虚拟设备。一、虚拟设备介绍虚拟设备服务(Virtual Device Service GO)可以模拟不同类型的设备来为核心数据微服务生成事件和读数。另外,用户可以通过命令服务向设备发送命令。虚拟设备服务允许您在没有任何真实设备的情况下执行功能或性能测试。此版本的虚拟设备服务基于Device SDK GO实现,使用ql(嵌入式 SQL 数据库引擎)来模拟虚拟资源。架构图如下:时序图如下:二、启动虚拟设备服务在上一讲.

2022-04-07 19:40:00 420

原创 EdgeX Foundry第二弹 架构介绍与启动

本文为Edgex系列第二篇文章,主要介绍EdgeX 2.x总体架构,并启动相关服务,体验UI页面,有一个整体认知。一、EdgeX Foundry介绍官方描述:EdgeX Foundry is an open source, vendor neutral, flexible, interoperable, software platform at the edge of the network, that interacts with the physical world ofdevices, .

2022-04-07 19:39:02 1520

原创 EdgeX Foundry第一弹 容器运行时docker与服务编排

本文为Edgex系列第一篇文章,主要探讨容器化相关内容。一、了解Edgex为什么先学习容器?1.应用服务调度。Edgex服务众多,包含应用服务、支持服务、设备服务、安全服务、中间件等,使用容器部署更为便利。2.官方对于云原生的支持,参考仓库:docker-compose:github.com/edgexfoundr…kubernetes:github.com/edgexfoundr…3.边缘计算社区生态的支持,如kubeedge、k3s等轻量级k8s服务。另外kubeedge也提供一

2022-04-07 19:37:43 2493

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除