热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

k8s(十一)helm安装premetheus

1prometheus基础知识1.1prometheus简介Prometheus是一套开源的系统监控报警框架。和Kubernetes类似,它也发源于Google的Borg体系,其原

1 prometheus基础知识

1.1 prometheus简介

Prometheus 是一套开源的系统监控报警框架。和Kubernetes类似,它也发源于Google的Borg体系,其原型为Borgmon,是一个几乎与Borg同时诞生的内部监控系统,由工作在SoundCloud的Google前员工在 2012年创建。之后作为社区开源项目进行开发,并于2015年正式发布。

2016年,Prometheus正式加入CNCF(Cloud Native Computing Foundation),是仅次于Kubernetes的第二个项目,目前已经全面接管了 Kubernetes项目的整套监控体系。

github地址:https://github.com/prometheus-operator/kube-prometheus/releases

其版本与k8s版本有对应关系:

 


1.2 prometheus优缺点

优点:



  • Kubernetes 默认支持,非常适合容器和微服务

  • 无依赖,安装方便,上手容易

  • 社区活跃,它不仅仅是个工具,而是生态

  • 已有很多插件或者exporter,可以适应多种应用场景的数据收集需要

  • Grafana 默认支持,提供良好的可视化

  • 高效 ,单一Prometheus可以处理百万级的监控指标,每秒处理数十万的数据点

缺点:



  • 暂时还不支持集群化。当然,在社区的支持和推动下,可以预期在不久的将来,Prometheus也将会推出完善的集群化方案。


1.3 Prometheus架构和组件说明

metrics,衡量指标;韵律学;量度;指标

基本架构如下:

数据库:prometheus;其他的都是数据采集插件; grafana读取数据并制成图表展示;Alertmanager告警插件

Prometheus Server: 用于收集监控的数据,存储及查询。
是Prometheus架构中的核心部分,负责实现对监控数据的获取、存储及查询。Prometheus Server可以通过静态配置管理监控目标,也可以配合使用Service Discovery的方式动态管理监控目标,并从这些监控目标中获取数据。
其次Prometheus Server本身也是一个时序数据库,将采集到的监控数据按照时间序列的方式存储在本地磁盘当中。
Prometheus Server对外提供了自定义的PromQL,实现对数据的查询以及分析。

以下3个插件主要收集(cpu,磁盘使用率,容器的状态信息)



  • kube-state-metrics:获取各种资源的最新状态(pod,deploy)

  • node-exporter:采集node节点的数据提供给Prom Server

  • prometheus-adapter:获取APIServer的资源指标提供给Prometheus Server

Pushgateway: 用于prometheus无法直接pull的监控部分支持.

service discovery: 服务发现

PromQL: 用于查询和展示

Exporter 提供监控数据的来源:
Exporter分为两类:
一类Exporter直接内置了对Prometheus监控的支持,如Kubernetes、etcd等;
另一类是因为原有监控目标并不直接支持Prometheus,需要通过Prometheus提供的Client Library编写该监控目标的监控采集程序,如Mysql、JMX等。
对于Exporter,Prometheus Server采用pull的方式来采集数据。

PushGateway :同样是监控数据的来源。对于由于特定原因,如网络环境不允许等,Prometheus Server不能直接与Exporter进行通信时,可以使用PushGateway来进行中转。内部网络的监控数据主动Push到Gateway中,而和对Exporter一样,Prometheus Server也利用pull的方式从PushGateway采集数据。

Alertmanager :Prometheus体系中的告警处理中心。
在Prometheus Server中可以设定门限与警报规则。当采集到的数据满足相关规则后,就会产生一条告警。
Alertmanager从 Prometheus Server接收到告警后,会根据事先设定的路径,向外发出告警。
常见的告警发送路径有:电子邮件、PagerDuty、Webhook、Slack等。

数据展示与输出:
Prometheus Server有内置的UI用于展示采集到的监控数据。在该UI上,可以通过各种内置的数学公式对原始数据进行加工,并通过图形化的方式展现出来。
Prometheus Server原生UI的展示方式还是比较基础和单薄,所以目前更多的是通过对接Grafana来进行数据的展示,可以得到更好的展示效果。

此外,Prometheus Server也提供API的方式来实现对监控数据的访问。

组件说明:

Metrics Server

是Kubernetes中资源使用情况的聚合器,收集数据给kubernetes集群内使用。
Metrics Server从Kubelets收集资源指标,并通过Metrics API将它们暴露在Kubernetes apiserver中,供水平Pod Autoscaler和垂直Pod Autoscaler使用。
kubectl top还可以访问Metrics API,这使得调试自动伸缩管道变得更容易。
Metrics Server不是用于非自动伸缩的目的。例如,不要将其用于将指标转发给监视解决方案,或者作为监视解决方案指标的来源。在这种情况下,请直接从Kubelet /metrics/resource端点收集度量。
Metrics Server提供



  • 在大多数集群上工作的单个部署

  • 快速自动缩放,每15秒收集一次指标。

  • 资源效率,为集群中的每个节点使用1毫秒的CPU内核和2 MB的内存。

  • 可扩展支持多达5000个节点群集。

Metrics与k8s各版本之间关系:

Prometheus Operator

prometheus-operator官方地址:https://github.com/prometheus-operator/prometheus-operator
是运行在Kubernetes之上的监控和告警工具。

部署时不用创建和修改prometheus的配置文件,所有的操作通过创建prometheus自己的资源对象来实现。对于监控配置的修改可以做到实时生效。

Prometheus Operator的本职就是一组用户自定义的CRD资源以及Controller的实现,Prometheus Operator负责监听这些自定义资源的变化,并且根据这些资源的定义自动化的完成如Prometheus Server自身以及配置的自动化管理工作。

Prometheus Operator提供了以下功能:



  • 创建/毁坏。在Kubernetes namespace中更容易启动一个Prometheus实例,一个特定的应用程序或团队更容易使用的Operator。



  • 简单配置。配Prometheus的基础东西,比如在Kubernetes的本地资源versions, persistence,retention policies和replicas。



  • Target Services通过标签。基于常见的Kubernetes label查询,自动生成监控target配置;不需要学习Prometheus特定的配置语言



以下是Prometheus Operator的架构图:

架构中的各组成部分以不同的资源方式运行在Kubernetes集群中,它们各自有不同的作用:



  • Operator:Operator资源会根据自定义资源(Custom Resource Definition,CRD。  /ˈkʌstəm,定做(制)的/)来部署和管理Prometheus Server,同时监控这些自定义资源事件的变化来做相应的处理,是整个系统的控制中心



  • Prometheus: Prometheus资源是声明性地描述Prometheus部署的期望状态。



  • Prometheus Server: Operator根据自定义资源Prometheus类型中定义的内容而部署的Prometheus Server集群,这些自定义资源可以看作用来管理Prometheus Server 集群的StatefulSets资源。



  • ServiceMonitor:ServiceMonitor也是一个自定义资源,它描述了一组被Prometheus监控的target列表。该资源通过标签来选取对应的Service Endpoint,让Prometheus Server通过选取的Service来获取Metrics信息。



  • Service:Service资源主要用来对应Kubernetes集群中的Metrics Server Pod,提供给ServiceMonitor选取,让Prometheus Server来获取信息。简单说就是Prometheus监控的对象,例如Node Exporter Service、Mysql Exporter Service等。



  • Alertmanager:Alertmanager也是一个自定义资源类型,由Operator根据资源描述内容来部署Alertmanager集群



prometheus Operator的自定义资源(CustomResourceDefinitions CRD)有:



  • Prometheus: 定义Prometheus监控系统的部署。

  • ServiceMonitor:监控一组service。该service需要暴露监控数据,供prometheus收集。

  • PodMonitor:监控一组pod。

  • PrometheusRule:Prometheus的规则文件。包含告警规则。

  • AlertManager:定义告警管理器的部署。

Grafana

支持多种图形和Dashboard的展示。是一个跨平台的开源的度量分析和可视化工具,可以查询采集的数据进行可视化展示,并及时通知。
特点:



  1. 展示方式:快速灵活的客户端图表,面板插件有许多不同方式的可视化指标和日志,官方库中有丰富的仪表盘插件、折线图、图标等多种展示方式

  2. 数据源:Graphite、InfluxDB、Prometheus、Elasticssearch等

  3. 通知提醒:以可视化方式定义最重要指标的警报规则,Grafana将不断计算并发送通知,在数据达到阀值时通知Slack、PagerDuty等获得通知

  4. 注释:使用来自不同数据源的丰富事件注释图表,将鼠标悬浮在事件上会显示完整的事件元数据和标记

  5. 过滤器:Ad-hoc过滤器允许动态创建新的键值过滤器,这些过滤器会自动应用于使用该数据源的所有查询。

Prometheus

采用pull方式apiserver、scheduler、controller-manager、kubelet组件数据,通过http协议传输

kubeStateMetrics
kube-state-metrics收集kubernetes集群内资源对象数据,制定告警规则。
它并不聚焦于k8s集群整体及相关组件的监控,而是更加关注deployments, nodes and pods等内部对象的状态。

NodeExporter
用于各node的关键度量指标状态数据


1.4 部署prometheus


1.4.1 分别配置yaml文件部署

按顺序部署Prometheus、kube-state-metrics、node-exporter以及Grafana。以下展示了各个组件的调用关系:

在Kubernetes Node上部署Node exporter,获取该节点物理机或者虚拟机的监控信息,在Kubernetes Master上部署kube-state-metrics获取Kubernetes集群的状态。所有信息汇聚到Prometheus进行处理和存储,然后通过Grafana进行展示。


1.4.1.1部署premotheus

部署对外可访问Prometheus,首先需要创建Prometheus所在命名空间,然后创建Prometheus使用的RBAC规则,创建Prometheus的configmap来保存配置文件。

创建service进行固定集群IP访问,创建deployment部署带有Prometheus容器的pod,最后创建ingress实现外部域名访问Prometheus。

部署顺序如图:

Step1:创建monitoring命名空间

编辑YAML文件,使用的apiVersion版本是v1,kind是Namespace,命名空间的名字是monitoring

 # vi ns-monitoring.yaml

apiVersion: v1
kind: Namespace
metadata:
name: monitoring

创建名为monitoring命名空间,相关对象都部署到该命名空间,使用以下命令创建命名空间:

# kubectl apply -f ns-monitoring.yaml
# kubectl get ns|grep monitoring

 

 

Step2、3、4:创建RBAC规则

创建RBAC规则,包含ServiceAccountClusterRoleClusterRoleBinding三类YAML文件。Service Account 是面向命名空间的,ClusterRole、ClusterRoleBinding是面向整个集群所有命名空间的,可以看到ClusterRole、ClusterRoleBinding对象并没有指定任何命名空间。ServiceAccount中可以看到,名字是prometheus-k8s,在monitoring命名空间下。ClusterRole一条规则由apiGroups、resources、verbs共同组成。ClusterRoleBinding中subjects是访问API的主体,subjects包含users、groups、service accounts三种类型,我们使用的是ServiceAccount类型

编辑清单# vi prometheus-rbac.yaml

apiVersion: v1
kind: ServiceAccount
metadata:
name: prometheus-k8s
namespace: monitoring
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: prometheus
rules:
- apiGroups: [""]
resources: ["nodes", "services", "endpoints", "pods"]
verbs: ["get", "list", "watch"]
- apiGroups: [""]
resources: ["configmaps"]
verbs: ["get"]
- nonResourceURLs: ["/metrics"]
verbs: ["get"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: prometheus
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: prometheus-k8s
namespace: monitoring

使用以下命令创建RBAC:

# kubectl apply -f prometheus-rbac.yaml
# kubectl get sa prometheus-k8s -n monitoring
# kubectl get clusterrole
# kubectl get clusterrolebinding prometheus

 

Step5:创建ConfigMap配置文件

使用ConfigMap方式创建Prometheus配置文件,YAML文件中使用的类型是ConfigMap,命名空间为monitoring,名称为prometheus-core,apiVersion是v1,data数据中包含prometheus.yaml文件,内容是prometheus.yaml: |这行下面的内容。使用以下命令创建Prometheus的配置文件

vi prometheus-core-cm.yaml

apiVersion: v1
kind: ConfigMap
metadata:
creationTimestamp: null
name: prometheus-core
namespace: monitoring
data:
prometheus.yaml: |
global:
scrape_interval: 15s
scrape_timeout: 15s
evaluation_interval: 15s
alerting:
alertmanagers:
- static_configs:
- targets: ["10.254.127.110:9093"]
rule_files:
- "/etc/prometheus-rules/*.yml"
scrape_configs:
- job_name: 'kubernetes-apiservers'
kubernetes_sd_configs:
- role: endpoints
scheme: https
tls_config:
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
relabel_configs:
- source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]
action: keep
regex: default;kubernetes;https

注:由于篇幅有限,该配置文件只有一个名为kubernetes-apiservers的job,完整配置请查看源码文件。
使用以下命令查看已创建的配置文件prometheus-core:

# kubectl apply -f prometheus-core-cm.yaml
# kubectl get cm -n monitoring prometheus-core 或加-o yaml查看详细信息

创建prometheus rules配置文件,使用ConfigMap方式创建prometheus rules配置文件,包含的内容是两个文件,分别是node-up.yml和cpu-usage.yml。

使用以下命令创建Prometheus的另外两个配置文件:

 # vi prometheus-rules-cm.yaml

apiVersion: v1
kind: ConfigMap
metadata:
name: prometheus-rules
namespace: monitoring
data:
node-up.yml: |
groups:
- name: server_rules
rules:
- alert: 机器宕机
expr: up{compOnent="node-exporter"} != 1
for: 1m
labels:
severity: "warning"
instance: "{{ $labels.instance }}"
annotations:
summary: "机器 {{ $labels.instance }} 处于down的状态"
description: "{{ $labels.instance }} of job {{ $labels.job }}
已经处于down状态超过1分钟,请及时处理"
cpu-usage.yml: |
groups:
- name: cpu_rules
rules:
- alert: cpu 剩余量过低
expr: 100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 85
for: 1m
labels:
severity: "warning"
instance: "{{ $labels.instance }}"
annotations:
summary: "机器 {{ $labels.instance }} cpu 已用超过设定值"
description: "{{ $labels.instance }} CPU 用量已超过 85% (current value is: {{ $value }}),请及时处理。"

本节的配置文件是Prometheus告警信息的配置文件,篇幅有限,可在文件后继续增加告警信息文件。
使用以下命令查看已下发的配置文件prometheus-core:

# kubectl apply -f prometheus-rules-cm.yaml
# kubectl get cm -n monitoring prometheus-rules

 

 

Step6:创建SVC

创建prometheus svc,会生成一个CLUSTER-IP进行集群内部的访问,CLUSTER-IP也可以自己指定。

# vi prometheus-service.yaml

apiVersion: v1
kind: Service
metadata:
name: prometheus
namespace: monitoring
labels:
app: prometheus
component: core
annotations:
prometheus.io/scrape: 'true'
spec:
ports:
- port: 9090
targetPort: 9090
protocol: TCP
name: webui
selector:
app: prometheus
component: core

使用以下命令创建Prometheus要用的service 

# kubectl apply -f prometheus-service.yaml
# kubectl get svc prometheus -n monitoring

 

Step7:创建Deployment

使用deployment方式创建prometheus实例,命令如下

# vi prometheus-deploy.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
name: prometheus-core
namespace: monitoring
labels:
app: prometheus
component: core
spec:
replicas: 1
selector:
matchLabels:
app: prometheus
component: core
template:
metadata:
name: prometheus-main
labels:
app: prometheus
component: core
spec:
serviceAccountName: prometheus-k8s
nodeSelector:
kubernetes.io/hostname: k8s-node01 #使用ip报错,找不到该节点
containers:
- name: prometheus
image: quay.io/prometheus/prometheus:v2.36.1
imagePullPolicy: IfNotPresent
args:
- '--storage.tsdb.retention=15d'
- '--config.file=/etc/prometheus/prometheus.yaml'
- '--storage.tsdb.path=/home/prometheus_data'
- '--web.enable-lifecycle'
ports:
- name: webui
containerPort: 9090
resources:
requests:
cpu: 20000m
memory: 20000M
limits:
cpu: 20000m
memory: 20000M
securityContext:
privileged: true
volumeMounts:
- name: data
mountPath: /home/prometheus_data
- name: config-volume
mountPath: /etc/prometheus
- name: rules-volume
mountPath: /etc/prometheus-rules
- name: time
mountPath: /etc/localtime
volumes:
- name: data
hostPath:
path: /home/cdnadmin/prometheus_data
- name: config-volume
configMap:
name: prometheus-core
- name: rules-volume
configMap:
name: prometheus-rules
- name: time
hostPath:
path: /etc/localtime

创建实例

# kubectl apply -f prometheus-deploy.yaml
# kubectl get deployment prometheus-core -n monitoring

 

 

 

 

 

 

 

 


1.4.2 下载github下统一配置的yaml文件部署

下载yaml

# git clone https://github.com/prometheus-operator/kube-prometheus.git
# cd ~/kube-prometheus/manifests/ 进入yaml模板目录

将service改为NodePort类型

grafana默认的服务使用Cluster IP,修改使用nodePort发布服务:

修改资源文件文件grafana-service.yaml,改服务类型位NodePort,指定端口号30091

apiVersion: v1
kind: Service
metadata:
labels:
app.kubernetes.io/component: grafana
app.kubernetes.io/name: grafana
app.kubernetes.io/part-of: kube-prometheus
app.kubernetes.io/version: 8.5.6
name: grafana
namespace: monitoring
spec:
type: NodePort
ports:
- name: http
port: 3000
targetPort: http
nodePort: 30091
selector:
app.kubernetes.io/component: grafana
app.kubernetes.io/name: grafana
app.kubernetes.io/part-of: kube-prometheus

或直接修改已运行的服务

# kubectl edit svc grafana -n monitoring -o yaml

编辑文件prometheus-service.yaml

apiVersion: v1
kind: Service
metadata:
labels:
app.kubernetes.io/component: prometheus
app.kubernetes.io/instance: k8s
app.kubernetes.io/name: prometheus
app.kubernetes.io/part-of: kube-prometheus
app.kubernetes.io/version: 2.36.1
name: prometheus-k8s
namespace: monitoring
spec:
type: NodePort
ports:
- name: web
port: 9090
targetPort: web
nodePort: 30400
- name: reloader-web
port: 8080
targetPort: reloader-web
nodePort: 30500
selector:
app.kubernetes.io/component: prometheus
app.kubernetes.io/instance: k8s
app.kubernetes.io/name: prometheus
app.kubernetes.io/part-of: kube-prometheus
sessionAffinity: ClientIP

编辑文件alertmanager-service.yaml

apiVersion: v1
kind: Service
metadata:
labels:
app.kubernetes.io/component: alert-router
app.kubernetes.io/instance: main
app.kubernetes.io/name: alertmanager
app.kubernetes.io/part-of: kube-prometheus
app.kubernetes.io/version: 0.24.0
name: alertmanager-main
namespace: monitoring
spec:
type: NodePort
ports:
- name: web
port: 9093
targetPort: web
nodePort: 30200
- name: reloader-web
port: 8080
targetPort: reloader-web
nodePort: 30300
selector:
app.kubernetes.io/component: alert-router
app.kubernetes.io/instance: main
app.kubernetes.io/name: alertmanager
app.kubernetes.io/part-of: kube-prometheus
sessionAffinity: ClientIP

创建资源

# kubectl create -f ~/kube-prometheus/manifests/setup/ #准备基本安装环境
# kubectl apply -f ~/kube-prometheus/manifests/
# kubectl get pod -n monitoring -w
 注:创建时会下载很多镜像,有些镜像无法直接下载,需要通过其他方式下载后改名为清单中使用的镜像

docker pull selina5288/prometheus-adapter:v0.9.1
docker image tag selina5288/prometheus-adapter:v0.9.1 k8s.gcr.io/prometheus-adapter/prometheus-adapter:v0.9.1
docker rmi selina5288/prometheus-adapter:v0.9.1
---
docker pull bitnami/node-exporter:1.3.1
docker tag bitnami/node-exporter:1.3.1 quay.io/prometheus/node-exporter:v1.3.1
docker rmi bitnami/node-exporter:1.3.1
---
docker pull grafana/grafana
docker tag grafana/grafana:latest grafana/grafana:8.5.6
docker rmi grafana/grafana:latest
---
docker pull bitnami/kube-state-metrics:2.5.0
docker tag bitnami/kube-state-metrics:2.5.0 k8s.gcr.io/kube-state-metrics/kube-state-metrics:v2.5.0
docker rmi bitnami/kube-state-metrics:2.5.0
---
docker save -o kube-rbac-proxy.tar.gz quay.io/brancz/kube-rbac-proxy:v0.12.0

scp -r /root/kube-rbac-proxy.tar.gz root@192.168.6.21:/root/.
scp -r kube-rbac-proxy.tar.gz root@192.168.6.10:/root/
docker load -i kube-rbac-proxy.tar.gz

查看custom metrics api

# kubectl get apiservices -n monitoring | grep metrics

查看pod启动状态和服务

# kubectl get pod -n monitoring -owide
# kubectl get svc -n monitoring

资源收集:kube-state-metrics、node-exporter、prometheus-adapter

监控插件:alertmanager-main-xxxx

web展示插件:grafana

grafana模版和测试
ip:30200/#/status查看报警配置
ip:30400查看prometheus
ip:30091查看grafana模版


1.5 web访问


1.5.1 访问prometheus

查看prometheus暴露的端口号

# kubectl get service -n monitoring | grep prometheus-k8s

prometheus 对应的 nodeport 端口为 30400,访问  http://MasterIP:30400,在status的targets菜单可看到所有节点状态,如果都是Up代表成功部署。

通过访问 http://MasterIP:30400/target 可以看到 prometheus 已经成功连接上了 k8s 的 apiserver。

查看服务发现

prometheus的WEB界面上提供了基本的查询K8S集群中每个POD的CPU使用情况,查询条件如下:

sum by (pod_name)( rate(container_cpu_usage_seconds_total{image!="", pod_name!=""}[1m] ) )

上述的查询有出现数据,说明 node-exporter 往 prometheus 中写入数据正常,接下来我们就可以部署grafana 组件,实现更友好的 webui 展示数据了。


1.5.2  访问 grafana


查看 grafana 服务暴露的端口号:

# kubectl get service -n monitoring | grep grafana

 

如上可以看到grafana的端口号是30091,浏览器访问 http://MasterIP:30091用户名密码默认admin/admin


添加数据来源,也可以说是绑定数据库

发现这里默认已经添加好了

 

点击最下面的test测试 

 


 
 
2、实战

2.1 安装redis监控

 

 


2.2 安装mysql监控


 

 

参考文档:

Kubernetes上的“火眼金睛”——Prometheus的安装实录

http://blog.itpub.net/69954434/viewspace-2678108/

k8s安装prometheus+grafana(第二弹:prometheus-operator,安装redis、mysql等监控)

https://blog.csdn.net/u014756339/article/details/123074765

 



推荐阅读
  • 本文推荐了六款高效的Java Web应用开发工具,并详细介绍了它们的实用功能。其中,分布式敏捷开发系统架构“zheng”项目,基于Spring、Spring MVC和MyBatis技术栈,提供了完整的分布式敏捷开发解决方案,支持快速构建高性能的企业级应用。此外,该工具还集成了多种中间件和服务,进一步提升了开发效率和系统的可维护性。 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • 修复一个 Bug 竟耗时两天?真的有那么复杂吗?
    修复一个 Bug 竟然耗费了两天时间?这背后究竟隐藏着怎样的复杂性?本文将深入探讨这个看似简单的 Bug 为何会如此棘手,从代码层面剖析问题根源,并分享解决过程中遇到的技术挑战和心得。 ... [详细]
  • 本文总结了一次针对大厂Java研发岗位的面试经历,探讨了面试中常见的问题及其背后的原因,并分享了一些实用的面试准备资料。 ... [详细]
  • 本文深入解析了Spring Cloud路由网关Zuul的核心功能及其典型应用场景。通过对方志朋老师教材的学习和实践,详细探讨了Zuul在微服务架构中的重要作用,包括请求路由、过滤器链管理以及服务动态扩展等关键特性。同时,结合实际案例,展示了Zuul在高并发和复杂业务场景下的应用优势,为读者提供了全面的技术参考。 ... [详细]
  • 近年来,BPM(业务流程管理)系统在国内市场逐渐普及,多家厂商在这一领域崭露头角。本文将对当前主要的BPM厂商进行概述,并分析其各自的优势。目前,市场上较为成熟的BPM产品主要分为两类:一类是综合型厂商,如IBM和SAP,这些企业在整体解决方案方面具有明显优势;另一类则是专注于BPM领域的专业厂商,它们在特定行业或应用场景中表现出色。通过对比分析,本文旨在为企业选择合适的BPM系统提供参考。 ... [详细]
  • 如何正确配置与使用日志组件:Log4j、SLF4J及Logback的连接与整合方法
    在当前的软件开发实践中,无论是开源项目还是日常工作中,日志框架都是不可或缺的工具之一。本文详细探讨了如何正确配置与使用Log4j、SLF4J及Logback这三个流行的日志组件,并深入解析了它们之间的连接与整合方法,旨在帮助开发者高效地管理和优化日志记录流程。 ... [详细]
  • 在尝试通过自定义端口部署Spring Cloud Eureka时遇到了连接失败的问题。本文详细描述了问题的现象,并提供了有效的解决方案,以帮助遇到类似情况的开发者。 ... [详细]
  • 本文详细介绍了Java代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ... [详细]
  • 回顾过去十多年的开发经历,我在技术能力、培训机会、国际视野以及大型企业的工作经验方面都有了显著的提升。特别是从最初的月薪8k到如今的38k,这一过程中,我深刻体会到系统化学习对提升架构能力的重要性。最初踏入职场时,面对众多未知,我主要依赖团队领导的指导,专注于编写代码、管理数据库和进行测试。随着经验的积累和技术的不断进步,我逐渐意识到,只有通过系统化的学习和实践,才能在技术领域取得更大的突破。 ... [详细]
  • 2021年Java开发实战:当前时间戳转换方法详解与实用网址推荐
    在当前的就业市场中,金九银十过后,金三银四也即将到来。本文将分享一些实用的面试技巧和题目,特别是针对正在寻找新工作机会的Java开发者。作者在准备字节跳动的面试过程中积累了丰富的经验,并成功获得了Offer。文中详细介绍了如何将当前时间戳进行转换的方法,并推荐了一些实用的在线资源,帮助读者更好地应对技术面试。 ... [详细]
  • 本文探讨了使用Python进行微服务架构设计的合理性和适用性。首先,介绍了微服务的基本概念及其在现代软件开发中的重要性。接着,通过具体的业务场景,详细分析了Python在微服务架构设计中的优势和挑战。文章还讨论了在实际应用中可能遇到的问题,并提出了相应的解决方案。希望本文能够为从事Python微服务开发的技术人员提供有价值的参考和指导。 ... [详细]
  • 如果程序使用Go语言编写并涉及单向或双向TLS认证,可能会遭受CPU拒绝服务攻击(DoS)。本文深入分析了CVE-2018-16875漏洞,探讨其成因、影响及防范措施,为开发者提供全面的安全指导。 ... [详细]
  • 2019年后蚂蚁集团与拼多多面试经验详述与深度剖析
    2019年后蚂蚁集团与拼多多面试经验详述与深度剖析 ... [详细]
  • 本文深入探讨了Spring Cloud Eureka在企业级应用中的高级使用场景及优化策略。首先,介绍了Eureka的安全配置,确保服务注册与发现过程的安全性。接着,分析了Eureka的健康检查机制,提高系统的稳定性和可靠性。随后,详细讨论了Eureka的各项参数调优技巧,以提升性能和响应速度。最后,阐述了如何实现Eureka的高可用性部署,保障服务的连续性和可用性。通过这些内容,开发者可以更好地理解和运用Eureka,提升微服务架构的整体效能。 ... [详细]
author-avatar
jiuye
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有