自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(175)
  • 资源 (1)
  • 收藏
  • 关注

原创 理解它,才算真正掌握Elasticsearch-es

Elasticsearch 简介Elasticsearch 是使用 Java 编写的一种开源搜索引擎,它在内部使用 Luence 做索引与搜索,通过对 Lucene 的封装,提供了一套简单一致的 RESTful API。Elasticsearch 也是一种分布式的搜索引擎架构,可以很简单地扩展到上百个服务节点,并支持 PB 级别的数据查询,使系统具备高可用和高并发性。核心概念Elasticsearch 的核心概念如下:Cluster:集群,由一个或多个 Elasticsearch 节点组成。

2020-07-09 13:28:30 877 1

转载 Java服务启动慢,JVM预热的问题,我在k8s上改进了

JVM 预热是一个非常头疼而又难解决的问题。本文讨论了在运行在 Kubernetes 集群中的 Java 服务如何解决 JVM 预热问题的一些方法和经验。JVM 预热是一个非常头疼而又难解决的问题。**基于 JVM 的应用程序在达到最高性能之前,需要一些时间来“预热”。**当应用程序启动时,通常会从较低的性能开始。这归因于像即时(JIT)编译这些事儿,它会通过收集使用配置文件信息来优化常用代码。最终这样的负面影响是,与平均水平相比,预热期间接收的 request 将具有非常高的响应时间。在容器化、高吞吐

2021-06-30 17:51:14 771

转载 Protobuf3 语法指南

英文原文:Language Guide (proto3)中文出处:Protobuf语言指南[译]Protobuf 语法指南中文出处是proto2的译文,proto3的英文出现后在原来基础上增改了,水平有限,还请指正这个指南描述了如何使用Protocol buffer 语言去描述你的protocol buffer 数据, 包括 .proto文件符号和如何从.proto文件生成类。包含了proto2版本的protocol buffer语言:对于老版本的proto3 符号,请见Proto2 Langu.

2021-05-15 18:22:56 463

转载 Istio熔断器功能解析

前言Istio因灵活的可观察性和安全的服务间通信受到了赞许。然而,其他更重要的功能才真正使得Istio成为了服务网格里的瑞士军刀,当遇到运行时长、延迟和错误率等SLO问题时,服务间的流量管理能力是至关重要的。在今年早些时候发布Istio operator时,我们的目标(除了管理Istio的安装和升级)是为这些出色的流量路由特性提供支持,同时使所有的功能都更加易用。最后,我们创建了一个简单且自动化的服务网格Backyards,它在Istio operator之上提供了管理UI、CLI和Graph...

2021-04-22 15:51:01 714

转载 Maven版本号中隐藏的惊天大秘密

一、背景  现在主流的Java系的互联网公司里,绝大多数公司都使用Maven作为依赖管理工具,一般我们对于依赖的版本号,常见两种类型:一种以“-RELEASE”结尾,另一种以“-SNAPSHOT”结尾。你别看这一个小小差别,在这里面可是隐藏着巨大的秘密:我们在团队协作开发的时候,如果依赖版本号的命名不是很规范的话,往往你会发现一种现象,那就是别人更新了一个依赖,已经提交到了私服上,但是你本地死活拉不下来,最后没有办法,你选择了直接删除本地仓库中的该版本的依赖,然后就完美解决了。但你有没有想一想为什么会出

2021-04-15 19:55:51 312 1

转载 ElasticSearch 实战之千万级 TPS 写入

前段时间,为了降低用户使用 ElasticSearch 的存储成本,我们做了数据的冷热分离。为了保持集群磁盘利用率不变,我们减少了热节点数量。ElasticSearch 集群开始出现写入瓶颈,节点产生大量的写入 rejected,大量从 kafka 同步的数据出现写入延迟。我们深入分析写入瓶颈,找到了突破点,最终将 Elasticsearch 的写入性能提升一倍以上,解决了 ElasticSearch 瓶颈导致的写入延迟。这篇文章介绍了我们是如何发现写入瓶颈,并对瓶颈进行深入分析,最终进行了创新性优化,极大

2021-04-09 14:29:05 1059

原创 easyconnect(mac版)总是初始化问题

遇到问题,首先通过现有的线索进行排查和尝试,如果简单的方法没法解决的时候,我们就需要通过一些特殊手段进行定位了。背景在某一次对mac系统升级并做了一些优化,删除了很多无用的软件,随后无法使用easyconnect 连接公司内网,操作时总是提示The times to init ECAgent当时自己也没在意,以为是系统版本问题,之后也找公司IT协助排查,也没有查到具体原因在排查过程中我也是经历了由浅入深的一个过程,在此做个记录。第一次排查-通过提示根据easyconnect弹出

2021-04-05 13:24:29 10166 6

转载 业界前所未有:10 分钟部署十万量级资源、1 小时完成微博后端异地重建

机房断电、数据中心着火,极端情况下全站持续不可用已经成为很多公司不得不直面的现实问题。微博的目标是在遭受极端情况下在线数据完全损毁时,1 个小时内在异地重新构建完整的微博服务,同时确保数据完整性。这在整个业界都是一个前所未有的巨大挑战。大数据时代数据至关重要数据时代全球每天新产生的数据达到 2.3EB,存量数据达到33ZB,无论是传统企业还是新晋独角兽企业,都在基于大数据进行更快、更好的决策支持,从数据中孵化新的产品与服务,同时降低成本。可以说,数据就是生产力。一旦出现数据丢失问题,对于企业...

2021-04-03 10:48:49 230

转载 航班数据实时查询技术整理与剖析

所谓航班数据实时查询,是指连接到民航主机以获取的数据,包括航班座位可利用情况、航班号、起飞落地时间、机型、航站楼、舱位折扣、票价、燃油税、机场建设税、公里数、经停点、餐食等。  一、前言  国内目前机票在线电子商务活动空前高涨,B2C典型的成功案例就是大家所熟知的携程、艺龙、12580、游艺、芒果网等。在线B2B分销经历了几年的发展后,今日天下通、易行天下、517NA、51BOOK、票盟等也都初具规模。无论是B2B还是B2C都表现出了强劲的发展势头。这些平台都需要有一个实时航班数据技术的支持,本文主

2021-03-19 18:02:45 1886 1

转载 Kubernetes K8S之Pod跨namespace名称空间访问Service服务

Kubernetes的两个Service(ServiceA、ServiceB)和对应的Pod(PodA、PodB)分别属于不同的namespace名称空间,现需要PodA和PodB跨namespace名称空间并通过Service实现互访。应该如何实现?场景需求Kubernetes的两个Service(ServiceA、ServiceB)和对应的Pod(PodA、PodB)分别属于不同的namespace名称空间,现需要PodA和PodB跨namespace名称空间并通过Service实现互..

2021-03-17 10:02:05 2798

转载 一种新的移动APP保持登陆的实现机制介绍

移动APP的特点移动APP和网页登陆不同的一点就是,App不需要用户每次使用都登陆,增加了易用性, 本文介绍一下App保持登陆的是实现机制目前常见的机制:一 使用传统的会话机制session把网页的机制照搬过来,利用传统网页的记住登陆机制.用户输入正确的用户名和密码后,创建登陆会话,同时生成一个记住登陆token保持在服务器端,同时发个客户端.客户端每次启动时,通过记录登陆token新建会话,后续使用便采取session机制.服务器端的可用Memcache 或 Redis 存储会话.

2021-03-16 21:58:44 968

转载 消息中间件—RocketMQ消息存储

消息存储是MQ消息队列中最为复杂和最为重要的一部分,所以小编也就放在RocketMQ系列篇幅中最后一部分来进行阐述和介绍。本文先从目前几种比较常用的MQ消息队列存储方式出发,为大家介绍RocketMQ选择磁盘文件存储的原因。然后,本文分别从RocketMQ的消息存储整体架构和RocketMQ文件存储模型层次结构两方面进行深入分析介绍。使得大家读完本文后对RocketMQ消息存储部分有一个大致的了解和认识。这里先回顾往期RocketMQ技术分享的篇幅(如果有童鞋没有读过之前的文章,建议先好好读下之前小编写的

2021-03-16 20:07:00 306 1

原创 谈谈DDD类型及案例分析

分层架构分层架构的一个重要原则是每层只能与位于其下方的层发生耦合。分层架构可以简单分为两种,即严格分层架构和松散分层架构。在严格分层架构中,某层只能与位于其直接下方的层发生耦合,而在松散分层架构中,则允许某层与它的任意下方层发生耦合。DDD分层架构中比较经典的三种模式:四层架构、五层架构和六边形架构。四层架构Eric Evans在《领域驱动设计-软件核心复杂性应对之道》这本书中提出了传统的四层架构模式:User Interface为用户界面层(或表示层),负责向用户显示信息和解释用户命令。这

2021-03-16 19:11:31 1509

转载 DevOps之运维平台构建

如今很多人认为devops将彻底取代传统运维,我不这么认为,在我看来devops只是很大程度上的代替了传统运维的手工操作,运维人员只需写好自动化运维脚本,利用自动化工具(zabbix,elk,ansible等)就可以实现自动发布和监控,省去了很多人力。因此Devops能否顺利落地,运维平台的建设将会很重要。本文主要简单介绍下我司的三大运维平台。运维职责运维平台当前我司运维平台主要有3个:持续集成和交付①基于Jenkins持续构建②支持容器化打包和部署③发布平台..

2021-03-15 15:23:27 3365

转载 DevOps平台中的自动化部署

基础概念:1、什么是持续集成?持续集成(Continuous Integration)指的是,频繁地将代码集成到主干,以便快速发现错误、防止分支大幅度偏离主干。持续集成的目的,就是在产品快速迭代的同时保持代码质量,它的核心措施主要有两点:1)代码集成到主干之前,必须通过自动化测试,只要有一个测试用例失败,就不能集成。2)通过Code Review、代码质量分析工具对代码质量进行把关,以便确定是否能够集成。Martin Flower说过, “持续集成并不能消除Bug,而是让他们非常容易发现

2021-03-15 15:09:36 1197

转载 Jedis源码分析(一)-Jedis介绍

Jedis源码分析(一)-Jedis介绍 Jedis源码分析(二)-Jedis类结构及实现 Jedis源码分析(三)- JedisCluster类结构及实现 Jedis源码分析(四)-JedisSentinel与ShardedJedis介绍1 Jedis的类结构​ 首先看Jedis的内部结构,图2-1中用橘色框标出了主要支架, 为突出主要架构,或有稍许内容没有标出。java图1-1 Jedis的类结构​ Jedis以输入的命令参数是否为二进制,将处理请求的具体实现部署在两个类中,例

2021-03-10 16:01:05 333

原创 MongoDB 优缺点?

一、什么是MongoDB MongoDB是C++编写的,是一个基于分布式文件存储的开源数据库系统。 在高负载的情况下,添加更多的节点,可以保证服务器性能。 MongoDB旨在为Web应用提供可扩展的高性能数据存储解决方案。 MongoDB将数据存储为一个文档,数据结构由键值(key=>value)对组成。 MongoDB文档类似于Json对象。字段值可以包含其他文档,数组及文档数组。 二、 MongoDB 的优缺点优点:...

2021-03-07 09:08:09 2629 2

原创 Redis是单线程的,但Redis为什么这么快?

一.Redis简介Redis是一个开源的内存中的数据结构存储系统,它可以用作:数据库、缓存和消息中间件。它支持多种类型的数据结构,如字符串(String),散列(Hash),列表(List),集合(Set),有序集合(Sorted Set或者是ZSet)与范围查询,Bitmaps,Hyperloglogs 和地理空间(Geospatial)索引半径查询。其中常见的数据结构类型有:String、List、Set、Hash、ZSet这5种。Redis 内置了复制(Replication)..

2021-03-06 17:38:53 189

转载 5个常问的Redis面试题你答得出来吗?

redis 集群模式的工作原理能说一下么?在集群模式下, redis 的 key 是如何寻址的?分布式寻址都有哪些算法?了解一致性 hash 算法吗?1、面试官心理分析在前几年,redis 如果要搞几个节点,每个节点存储一部分的数据,得借助一些中间件来实现,比如说有codis,或者 twemproxy,都有。有一些 redis 中间件,你读写 redis 中间件,redis 中间件负责将你的数据分布式存储在多台机器上的 redis 实例中。这两年,redis 不断在发展,redis 也不断有新的

2021-03-06 15:52:42 368

原创 Json 转 Bson

MongoDB中是以Bson数据格式进行存储的,Json字符串没有办法直接写入MongoDB 可以将Json字符串转换成DBObject或者Document,然后写入MongoDB将Json字符转换成 DBObject(准确的说是BasicDBObject)Scala版本:import com.mongodb.DBObjectimport com.mongodb.casbah.{MongoClient, MongoCollection}import com.mongodb.util.JSO

2021-03-06 12:42:25 1722

原创 Kubernetes-Pod/ReplicaSet/Deployment/Service关系

资源之间的关系1)Pod是最小的调度单元,Pod启停容器镜像等; 2)Pod由ReplicaSet控制,ReplicaSet由Deployment控制,然后外部提供服务的是Service。RS—>Pod查看Pod:$ kubectl get pods查看RS:$ kubectl get rs查看Pod详情:$ kubectl describe pods pod_name我们可以通过kubectl describe pods...

2021-03-06 12:36:37 253

原创 Kubenetes里pod和service绑定的实现方式

首先使用下面的命令行创建一个名称为jerry-nginx-1982的deployment:kubectl create deployment jerry-nginx-1982 --image=nginx然后使用命令行kubectl get deployment 得到创建好的deployment:然后创建一个同名的service,类型为nodeport。kubectl create service nodeport jerry-nginx-1982 --tcp 80:80创建完成后,.

2021-03-06 12:28:00 511 1

转载 以我的亲身经历为例,告诉大家写简历和面试的技巧(面向高级开发和架构师)

以我的亲身经历为例,告诉大家写简历和面试的技巧(面向高级开发和架构师)之前我也写过不少介绍面试相关的博文,有些文章的点击量还不低,这些面试相关的经验大多都是从我面试别人的过程中提炼出来了。在18年底到19年3月,陆续面试了几家公司,有成有不成的,最终进了一家比较满意的知名外企。在本文里,我将介绍我这段时间里更新简历和面试的相关经历。可能面试相关的一些方法,大家能从我之前的博文里看到,但在本文里,大家更能从相关实战性的例子中进一步体会到面试技巧的使用方法。1 刚开始一定得通过一些小公司练手

2021-03-04 17:14:22 351 1

转载 调用链选型之Zipkin,Pinpoint,SkyWalking,CAT

简介Zipkin是Twitter开源的调用链分析工具,目前基于springcloud sleuth得到了广泛的使用,特点是轻量,使用部署简单。Pinpoint是韩国人开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件,UI功能强大,接入端无代码侵入。SkyWalking是本土开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件,UI功能较强,接入端无代码侵入。目前已加入Apache孵化器。CAT是大众点评开源的基于编码和配置的调用链

2021-02-25 14:29:44 1132

原创 Spring Cloud Feign 总结问题,注意点,性能调优

Feign常见问题总结FeignClient接口如使用@PathVariable,必须指定value属性//在一些早期版本中, @PathVariable("id") 中的 "id" ,也就是value属性,必须指定,不能省略。@FeignClient("microservice-provider-user")public interface UserFeignClient { @RequestMapping(value = "/simple/{id}", method = Reques.

2021-02-24 15:58:57 1548

转载 Kubernetes (k8s) v1.19.0 安装部署,单机部署

系统准备环境准备部署集群没有特殊说明均使用root用户执行命令硬件信息k8s-master 内存16GB 硬盘20GB k8s 控制节点 + Node节点软件信息CentOS Linux release 7.6.1810 (Core)Kubernetesv1.19.0Docker 19.03.12修改主机名hostnamectl set-hostname k8s-master关闭防火墙 (仅用于测试,生产请不要使用)systemctl dis..

2021-02-08 10:36:59 1214 1

原创 centos7 安装最新版的docker

1.查看系统要求Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看CentOS的内核版本。uname -a 或者 uname -r[root@centos ~]# uname -r 3.10.0-957.21.3.el7.x86_642.删除旧版本yum remove docker docker-common docker-selinux docker-engine3.安装需要的软件包yum-util 提供yum-config-manager功能,另外两个是dev

2021-02-07 19:24:13 160

转载 docker push 到阿里云镜像仓库过程中发生了 denied: requested access to the resource is denied 错误

docker push 到阿里云镜像仓库过程中发生了 denied: requested access to the resource is denied 错误问题发生环境Vagrant 2.2.6 + VirtualBox 6.0.14 docker 19.03.9问题发生情况本人在学习docker 过程,想通过push 命令将本地的image上传到阿里云镜像仓库中去 在执行sudo docker push registry.cn-hangzhou.aliyuncs.com/itcra.

2021-02-07 17:04:27 1356

转载 centos7启动jenkins时报错,Caused: hudson.util.AWTProblem,然后在异常的其他信息中包含font等等,那就是缺少一个字体工具

先说解决方案:执行下面的命令再重新启动就行了yum install fontconfig异常信息: SEVERE hudson.util.BootFailure#publish: Failed to initialize Jenkins java.lang.NullPointerException at sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264)...

2021-02-07 12:33:32 752

转载 使用nexus3.19搭建自己的maven私服

使用nexus3.19搭建自己的maven私服  怎么安装参见CentOS6.9安装Nexus3.19,接下来就是如何配置。打开我们安装后的nexus界面,用admin账号登陆,点击Server administration and configuration按钮:  点击Repository  我们可以看到nexus默认给我建好了一些仓库,其中包括3类:代理proxy,仓库组group和宿主host。  代理用来指向远程仓库的,如中央仓库,但毕...

2021-02-06 23:38:08 380

转载 Connection reset by peer的常见原因及解决办法

1,如果一端的Socket被关闭(或主动关闭,或因为异常退出而 引起的关闭),另一端仍发送数据,发送的第一个数据包引发该异常(Connect reset by peer)。Socket默认连接60秒,60秒之内没有进行心跳交互,即读写数据,就会自动关闭连接。2,一端退出,但退出时并未关闭该连接,另一端如果在从连接中读数据则抛出该异常(Connection reset)。简单的说就是在连接断开后的读和写操作引起的。Connection reset by peer的常见原因:1)服务器的

2021-01-28 12:50:12 5847

原创 Kubernetes环境配置JVM内存

我们知道JVM在docker容器环境中是无法正确检测到可用内存的遇到问题的项目技术栈为JDK 8 + Spring Boot + Tomcat,部署在docker环境。项目运行过程中出现了java.lang.OutOfMemoryError: Java heap space异常,当时项目的部署文件如下: 1234567891011121314151617181920212223242526272829303132333435

2021-01-24 19:21:56 5373 2

转载 详解k8s零停机滚动发布微服务 - kubernetes

1、前言在当下微服务架构盛行的时代,用户希望应用程序时时刻刻都是可用,为了满足不断变化的新业务,需要不断升级更新应用程序,有时可能需要频繁的发布版本。实现"零停机"、“零感知”的持续集成(Continuous Integration)和持续交付/部署(Continuous Delivery)应用程序,一直都是软件升级换代不得不面对的一个难题和痛点,也是一种追求的理想方式,也是DevOps诞生的目的。2、滚动发布把一次完整的发布过程,合理地分成多个批次,每次发布一个批次,成功后,再发布下一个批次,

2021-01-24 11:50:27 668

原创 实践Kong for Kubernetes(K8S)

使用以下安装方法之一安装Kong for Kubernetes:YAML清单 helm KustomizeYAML清单要通过部署Kongkubectl,请使用:kubectl apply -f https://bit.ly/kong-ingress-dbless复制复制重要!这不是生产级部署。根据您的用例调整“参数”:副本:确保您正在运行Kong的多个实例,以防止由于单个节点故障而造成的中断。 性能优化:调整Kong的内存设置,并根据使用情况定制部署。 负载均衡器:确保在.

2021-01-23 17:53:28 864

转载 优化nginx-ingress-controller并发性能

这两天遇到一个很有意思的应用场景:有一个业务应用部署在kubernetes容器中,如果将该应用以Kubernetes Service NodePort暴露出来,这时测试人员测得应用的页面响应性能较高,可以达到2w多的QPS;而将这个Kubernetes Service再用Ingress暴露出来,测试人员测得的QPS立马就较得只有1w多的QPS了。这个性能开销可以说相当巨大了,急需进行性能调优。花了一段时间分析这个问题,终于找到原因了,这里记录一下。问题复现问题是在生产环境出现了,不便于直接在生产环境

2021-01-22 17:37:27 1973

原创 Kubectl 常用命令大全

Kubectl 常用参数分类基础命令:create,delete,get,run,expose,set,explain,edit# 创建Deployment和Service资源​$ kubectl create -f demo-deployment.yaml$ kubectl create -f demo-service.yaml# 根据yaml文件删除对应的资源,但是yaml文件并不会被删除,这样更加高效​$ kubectl delete -f demo-deployment.y

2021-01-20 10:29:15 958

转载 K8s宣布弃用Docker,千万别慌!

目前,Kubelet 中的 Docker 支持功能现已弃用,并将在之后的版本中被删除。Kubelet 之前使用的是一个名为 dockershim 的模块,用以实现对 Docker 的 CRI 支持。但 Kubernetes 社区发现了与之相关的维护问题,因此建议大家考虑使用包含 CRI 完整实现(兼容 v1alpha1 或 v1)的可用容器运行时。简而言之,Docker 并不支持 CRI(容器运行时接口)这一 Kubernetes 运行时 API,而 Kubernetes 用户一直以来所使用

2021-01-02 21:00:57 4121

原创 MySQL8.0.18通过Canal1.1.5数据增量同步至Elasticsearch7.x

IntroductionCanal是基于MySQL二进制日志的高性能数据同步系统 属于阿里巴巴的一个开源项目,基于java实现,整体已经在很多大型的互联网项目生产环境中使用,包括阿里、美团等都有广泛的应用,是一个非常成熟的数据库同步方案,基础的使用只需要进行简单的配置即可,以提供可靠的低延迟增量数据管道。官方文档:https://github.com/alibaba/canal/wiki项目地址:https://github.com/alibaba/canal下载地址:https://githu

2020-12-10 19:55:10 2224 5

原创 [Kong 与 Konga 与 Postgres数据库] 之 Kuberneres 部署

1、Kong的概述Kong是一个clould-native、快速的、可扩展的、分布式的微服务抽象层(也称为API网关、API中间件或在某些情况下称为服务网格)框架。Kong作为开源项目在2015年推出,它的核心价值是高性能和可扩展性。Kong被广泛用于从初创企业到全球5000家公司以及政府组织的生产环境中。如果构建Web、移动或IoT(物联网)应用,可能最终需要使用通用的功能来实现这些应用。Kong充当微服务请求的网关(或侧车),通过插件能够提供负载平衡、日志记录、身份验证、速率限制、转换等能力

2020-12-10 15:55:22 1072

原创 深入了解Redis主从复制的配置和实现原理

Redis的持久化功能在一定程度上保证了数据的安全性,即便是服务器宕机的情况下,也可以保证数据的丢失非常少。通常,为了避免服务的单点故障,会把数据复制到多个副本放在不同的服务器上,且这些拥有数据副本的服务器可以用于处理客户端的读请求,扩展整体的性能下面会介绍Redis的主从复制配置和实现原理,后续还会有Redis的高可用方案:哨兵机制(Sentinel)、分区集群(Cluster)什么是主从复制我们可以通过slaveof <host> <port>命令,或者通过配置sla

2020-12-09 20:30:26 205

生产计划APSrrr

企业计划排程与流程,aps规划,每个排程中所需要的必需条件。

2009-03-24

空空如也

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

TA关注的人

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