范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

云原生之K8S中Pod健康检测服务可用性检查详解

  写在前面本文内容涉及: LivenessProbe  ,ReadinessProbe  两种探针  的一些基本理论ExecAction  ,TCPSocketAction  ,HTTPGetAction  三种检测方式  的Demo
  中秋明月,豪门有,贫家也有。极慰人心。 ——烽火戏诸侯《剑来》 Pod健康检查和服务可用性检查健康检查的目的
  探测的目的  : 用来维持 pod的健壮性,当pod挂掉之后,deployment会生成新的pod,但如果pod是正常运行的,但pod里面出了问题,此时deployment是监测不到的。故此需要探测(probe)-pod是不是正常提供服务的探针类似
  Kubernetes   对 Pod   的健康状态可以通过两类探针来检查:LivenessProbe  和ReadinessProbe  , kubelet定期执行这两类探针来诊断容器的健康状况。都是通过deployment实现的
  探针类型
  描述
  LivenessProbe探针
  用于判断容器是否存活(Running状态) ,如果LivenessProbe探针探测到容器不健康,则kubelet将杀掉该容器,并根据容器的重启策略做相应的处理。如果一个容器不包含LivenesspProbe探针,那么kubelet认为该容器的LivenessProbe探针返回的值永远是Success。
  ReadinessProbe探针
  用于判断容器服务是否可用(Ready状态) ,达到Ready状态的Pod才可以接收请求。对于被Service管理的Pod, Service与Pod Endpoint的关联关系也将基于Pod是否Ready进行设置。如果在运行过程中Ready状态变为False,则系统自动将其从Service的后端Endpoint列表中隔离出去,后续再把恢复到Ready状态的Pod加回后端Endpoint列表。这样就能保证客户端在访问Service时不会被转发到服务不可用的Pod实例上。  检测方式及参数配置
  LivenessProbe  和ReadinessProbe  均可配置以下三种实现方式。
  方式
  描述
  ExecAction
  在容器内部执行一个命令,如果该命令的返回码为0,则表明容器健康。
  TCPSocketAction
  通过容器的IP地址和端口号执行TC检查,如果能够建立TCP连接,则表明容器健康。
  HTTPGetAction
  通过容器的IP地址、端口号及路径调用HTTP Get方法,如果响应的状态码大于等于200且小于400,则认为容器健康。
  对于每种探测方式,需要设置 initialDelaySeconds  和timeoutSeconds  等参数,它们的含义分别如下。
  参数
  描述
  initialDelaySeconds:
  启动容器后进行首次健康检查的等待时间,单位为s。
  timeoutSeconds:
  健康检查发送请求后等待响应的超时时间,单位为s。当超时发生时, kubelet会认为容器已经无法提供服务,将会重启该容器。
  periodSeconds
  执行探测的频率,默认是10秒,最小1秒。
  successThreshold
  探测失败后,最少连续探测成功多少次才被认定为成功,默认是1,对于liveness必须是1,最小值是1。
  failureThreshold
  当 Pod 启动了并且探测到失败,Kubernetes 的重试次数。存活探测情况下的放弃就意味着重新启动容器。就绪探测情况下的放弃 Pod 会被打上未就绪的标签。默认值是 3。最小值是 1
  Kubernetes的ReadinessProbe机制可能无法满足某些复杂应用对容器内服务可用状态的判断
  所以Kubernetes从1.11版本开始,引入PodReady++特性对Readiness探测机制进行扩展,在1.14版本时达到GA稳定版,称其为Pod Readiness Gates。
  通过Pod Readiness Gates机制,用户可以将自定义的ReadinessProbe探测方式设置在Pod上,辅助Kubernetes设置Pod何时达到服务可用状态(Ready) 。为了使自定义的ReadinessProbe生效,用户需要提供一个外部的控制器(Controller)来设置相应的Condition状态。
  Pod的Readiness Gates在Pod定义中的ReadinessGate字段进行设置。下面的例子设置了一个类型为www.example.com/feature-1的新ReadinessGate:
  –
  新增的自定义Condition的状态(status)将由用户自定义的外部控·制器设置,默认值为False. Kubernetes将在判断全部readinessGates条件都为True时,才设置Pod为服务可用状态(Ready为True) 。
  这个不是太懂,需要以后再研究下 学习环境准备 [root@vms81.liruilongs.github.io]-[~/ansible]  $mkdir liveness-probe  [root@vms81.liruilongs.github.io]-[~/ansible]  $cd liveness-probe/  [root@vms81.liruilongs.github.io]-[~/ansible/liveness-probe]  $kubectl  create ns liveness-probe namespace/liveness-probe created  [root@vms81.liruilongs.github.io]-[~/ansible/liveness-probe]  $kubectl config current-context kubernetes-admin@kubernetes  [root@vms81.liruilongs.github.io]-[~/ansible/liveness-probe]  $kubectl config set-context $(kubectl config current-context) --namespace=liveness-probe Context "kubernetes-admin@kubernetes" modified. LivenessProbe探针
  用于判断容器是否存活(Running状态) ,如果LivenessProbe探针探测到容器不健康,则kubelet将杀掉该容器,并根据容器的重启策略做相应的处理 ExecAction方式:command
  在容器内部执行一个命令,如果该命令的返回码为0,则表明容器健康。
  资源文件定义  [root@vms81.liruilongs.github.io]-[~/ansible/liveness-probe]  $cat liveness-probe.yaml apiVersion: v1 kind: Pod metadata:   creationTimestamp: null   labels:     run: pod-liveness   name: pod-liveness spec:   containers:   - args:     - /bin/sh     - -c     - touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; slee 10     livenessProbe:       exec:         command:         - cat         - /tmp/healthy       initialDelaySeconds: 5 #容器启动的5s内不监测       periodSeconds: 5 #每5s钟检测一次     image: busybox     imagePullPolicy: IfNotPresent     name: pod-liveness     resources: {}   dnsPolicy: ClusterFirst   restartPolicy: Always  status: {}
  运行这个deploy。当pod创建成功后,新建文件,并睡眠30s,删掉文件在睡眠。使用liveness检测文件的存在  [root@vms81.liruilongs.github.io]-[~/ansible/liveness-probe]  $kubectl  apply  -f liveness-probe.yaml pod/pod-liveness created  [root@vms81.liruilongs.github.io]-[~/ansible/liveness-probe]  $kubectl  get pods NAME           READY   STATUS    RESTARTS     AGE pod-liveness   1/1     Running   1 (8s ago)   41s   # 30文件没有重启
  运行超过30s后。文件被删除,所以被健康检测命中,pod根据重启策略重启  [root@vms81.liruilongs.github.io]-[~/ansible/liveness-probe]  $kubectl  get pods NAME           READY   STATUS    RESTARTS      AGE pod-liveness   1/1     Running   2 (34s ago)   99s
  99s后已经从起了第二次  [root@vms81.liruilongs.github.io]-[~/ansible]  $ansible 192.168.26.83 -m shell -a "docker ps | grep pod-liveness" 192.168.26.83 | CHANGED | rc=0 >> 00f4182c014e   7138284460ff                                        "/bin/sh -c "touch /…"   6 seconds ago   Up 5 seconds             k8s_pod-liveness_pod-liveness_liveness-probe_81b4b086-fb28-4657-93d0-bd23e67f980a_0 01c5cfa02d8c   registry.aliyuncs.com/google_containers/pause:3.5   "/pause"                 7 seconds ago   Up 6 seconds             k8s_POD_pod-liveness_liveness-probe_81b4b086-fb28-4657-93d0-bd23e67f980a_0  [root@vms81.liruilongs.github.io]-[~/ansible]  $kubectl get pods NAME           READY   STATUS    RESTARTS   AGE pod-liveness   1/1     Running   0          25s  [root@vms81.liruilongs.github.io]-[~/ansible]  $kubectl get pods NAME           READY   STATUS    RESTARTS      AGE pod-liveness   1/1     Running   1 (12s ago)   44s  [root@vms81.liruilongs.github.io]-[~/ansible]  $ansible 192.168.26.83 -m shell -a "docker ps | grep pod-liveness" 192.168.26.83 | CHANGED | rc=0 >> 1eafd7e8a12a   7138284460ff                                        "/bin/sh -c "touch /…"   15 seconds ago   Up 14 seconds             k8s_pod-liveness_pod-liveness_liveness-probe_81b4b086-fb28-4657-93d0-bd23e67f980a_1 01c5cfa02d8c   registry.aliyuncs.com/google_containers/pause:3.5   "/pause"                 47 seconds ago   Up 47 seconds             k8s_POD_pod-liveness_liveness-probe_81b4b086-fb28-4657-93d0-bd23e67f980a_0  [root@vms81.liruilongs.github.io]-[~/ansible]  $
  查看节点机docker中的容器ID,前后不一样,确定是POD被杀掉后重启。 HTTPGetAction的方式
  通过容器的IP地址、端口号及路径调用HTTP Get方法,如果响应的状态码大于等于200且小于400,则认为容器健康。
  创建资源文件,即相关参数使用  [root@vms81.liruilongs.github.io]-[~/ansible/liveness-probe]  $cat liveness-probe-http.yaml apiVersion: v1 kind: Pod metadata:   creationTimestamp: null   labels:     run: pod-livenss-probe   name: pod-livenss-probe spec:   containers:   - image: nginx     imagePullPolicy: IfNotPresent     name: pod-livenss-probe     livenessProbe:       failureThreshold: 3 #当 Pod 启动了并且探测到失败,Kubernetes 的重试次数       httpGet:         path: /index.html         port: 80         scheme: HTTP       initialDelaySeconds: 10  #容器启动后第一次执行探测是需要等待多少秒       periodSeconds: 10   #执行探测的频率,默认是10秒,最小1秒       successThreshold: 1 #探测失败后,最少连续探测成功多少次才被认定为成功       timeoutSeconds: 10 #探测超时时间,默认1秒,最小1秒     resources: {}   dnsPolicy: ClusterFirst   restartPolicy: Always status: {}
  运行deploy,这个的探测机制访问Ngixn的默认欢迎页  [root@vms81.liruilongs.github.io]-[~/ansible/liveness-probe]  $vim liveness-probe-http.yaml  [root@vms81.liruilongs.github.io]-[~/ansible/liveness-probe]  $kubectl apply  -f liveness-probe-http.yaml pod/pod-livenss-probe created  [root@vms81.liruilongs.github.io]-[~/ansible/liveness-probe]  $kubectl  get pods NAME                READY   STATUS    RESTARTS   AGE pod-livenss-probe   1/1     Running   0          15s  [root@vms81.liruilongs.github.io]-[~/ansible/liveness-probe]  $kubectl exec -it pod-livenss-probe -- rm /usr/share/nginx/html/index.html  [root@vms81.liruilongs.github.io]-[~/ansible/liveness-probe]  $kubectl  get pods NAME                READY   STATUS    RESTARTS     AGE pod-livenss-probe   1/1     Running   1 (1s ago)   2m31s
  当欢迎页被删除时,访问报错,被检测命中,pod重启 TCPSocketAction方式
  通过容器的IP地址和端口号执行TCP检查,如果能够建立TCP连接,则表明容器健康。
  资源文件定义 [root@vms81.liruilongs.github.io]-[~/ansible/liveness-probe]  $cat liveness-probe-tcp.yaml apiVersion: v1 kind: Pod metadata:   creationTimestamp: null   labels:     run: pod-livenss-probe   name: pod-livenss-probe spec:   containers:   - image: nginx     imagePullPolicy: IfNotPresent     name: pod-livenss-probe     livenessProbe:       failureThreshold: 3       tcpSocket:         port: 8080       initialDelaySeconds: 10       periodSeconds: 10       successThreshold: 1       timeoutSeconds: 10     resources: {}   dnsPolicy: ClusterFirst   restartPolicy: Always status: {}
  访问8080端口,但是8080端口未开放,所以访问会超时,不能建立连接,命中检测,重启Pod  [root@vms81.liruilongs.github.io]-[~/ansible/liveness-probe]  $kubectl  apply  -f liveness-probe-tcp.yaml pod/pod-livenss-probe created  [root@vms81.liruilongs.github.io]-[~/ansible/liveness-probe]  $kubectl  get pods NAME                READY   STATUS    RESTARTS   AGE pod-livenss-probe   1/1     Running   0          8s  [root@vms81.liruilongs.github.io]-[~/ansible/liveness-probe]  $kubectl  get pods NAME                READY   STATUS    RESTARTS     AGE pod-livenss-probe   1/1     Running   1 (4s ago)   44s  [root@vms81.liruilongs.github.io]-[~/ansible/liveness-probe]  $ ReadinessProbe探针
  用于判断容器服务是否可用(Ready状态) ,达到Ready状态的Pod才可以接收请求。负责不能进行访问 ExecAction方式:command
  资源文件定义,使用钩子建好需要检查的文件  [root@vms81.liruilongs.github.io]-[~/ansible/liveness-probe]  $cat readiness-probe.yaml apiVersion: v1 kind: Pod metadata:   creationTimestamp: null   labels:     run: pod-liveness   name: pod-liveness spec:   containers:   - readinessProbe:       exec:         command:         - cat         - /tmp/healthy       initialDelaySeconds: 5 #容器启动的5s内不监测       periodSeconds: 5 #每5s钟检测一次     image: nginx     imagePullPolicy: IfNotPresent     name: pod-liveness     resources: {}     lifecycle:       postStart:         exec:           command: ["/bin/sh", "-c","touch /tmp/healthy"]   dnsPolicy: ClusterFirst   restartPolicy: Always status: {}
  创建3个有Ngixn的pod,通过POD创建一个SVC做测试用  [root@vms81.liruilongs.github.io]-[~/ansible/liveness-probe]  $sed "s/pod-liveness/pod-liveness-1/" readiness-probe.yaml | kubectl apply  -f - pod/pod-liveness-1 created  [root@vms81.liruilongs.github.io]-[~/ansible/liveness-probe]  $sed "s/pod-liveness/pod-liveness-2/" readiness-probe.yaml | kubectl apply  -f - pod/pod-liveness-2 created  [root@vms81.liruilongs.github.io]-[~/ansible/liveness-probe]  $kubectl  get pods -o wide NAME             READY   STATUS    RESTARTS   AGE    IP             NODE                         NOMINATED NODE   READINESS GATES pod-liveness     1/1     Running   0          3m1s   10.244.70.50   vms83.liruilongs.github.io               pod-liveness-1   1/1     Running   0          2m     10.244.70.51   vms83.liruilongs.github.io               pod-liveness-2   1/1     Running   0          111s   10.244.70.52   vms83.liruilongs.github.io              
  修改主页文字  [root@vms81.liruilongs.github.io]-[~/ansible/liveness-probe]  $serve=pod-liveness  [root@vms81.liruilongs.github.io]-[~/ansible/liveness-probe]  $kubectl exec  -it $serve -- sh -c "echo $serve > /usr/share/nginx/html/index.html"  [root@vms81.liruilongs.github.io]-[~/ansible/liveness-probe]  $kubectl exec  -it $serve -- sh -c "cat /usr/share/nginx/html/index.html" pod-liveness  [root@vms81.liruilongs.github.io]-[~/ansible/liveness-probe]  $serve=pod-liveness-1  [root@vms81.liruilongs.github.io]-[~/ansible/liveness-probe]  $kubectl exec  -it $serve -- sh -c "echo $serve > /usr/share/nginx/html/index.html"  [root@vms81.liruilongs.github.io]-[~/ansible/liveness-probe]  $serve=pod-liveness-2  [root@vms81.liruilongs.github.io]-[~/ansible/liveness-probe]  $kubectl exec  -it $serve -- sh -c "echo $serve > /usr/share/nginx/html/index.html"  [root@vms81.liruilongs.github.io]-[~/ansible/liveness-probe]  $
  修改标签  [root@vms81.liruilongs.github.io]-[~/ansible/liveness-probe]  $kubectl get pods --show-labels NAME             READY   STATUS    RESTARTS   AGE   LABELS pod-liveness     1/1     Running   0          15m   run=pod-liveness pod-liveness-1   1/1     Running   0          14m   run=pod-liveness-1 pod-liveness-2   1/1     Running   0          14m   run=pod-liveness-2  [root@vms81.liruilongs.github.io]-[~/ansible/liveness-probe]  $kubectl edit pods pod-liveness-1 pod/pod-liveness-1 edited  [root@vms81.liruilongs.github.io]-[~/ansible/liveness-probe]  $kubectl edit pods pod-liveness-2 pod/pod-liveness-2 edited  [root@vms81.liruilongs.github.io]-[~/ansible/liveness-probe]  $kubectl get pods --show-labels NAME             READY   STATUS    RESTARTS   AGE   LABELS pod-liveness     1/1     Running   0          17m   run=pod-liveness pod-liveness-1   1/1     Running   0          16m   run=pod-liveness pod-liveness-2   1/1     Running   0          16m   run=pod-liveness  [root@vms81.liruilongs.github.io]-[~/ansible/liveness-probe]  $
  要删除文件检测  [root@vms81.liruilongs.github.io]-[~/ansible/liveness-probe]  $kubectl  exec -it pod-liveness -- ls /tmp/ healthy  [root@vms81.liruilongs.github.io]-[~/ansible/liveness-probe]  $kubectl  exec -it pod-liveness-1 -- ls /tmp/ healthy
  使用POD创建SVC  [root@vms81.liruilongs.github.io]-[~/ansible/liveness-probe]  $kubectl expose  --name=svc pod pod-liveness --port=80 service/svc exposed  [root@vms81.liruilongs.github.io]-[~/ansible/liveness-probe]  $kubectl  get ep NAME   ENDPOINTS                                         AGE svc    10.244.70.50:80,10.244.70.51:80,10.244.70.52:80   16s  [root@vms81.liruilongs.github.io]-[~/ansible/liveness-probe]  $kubectl get svc NAME   TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE svc    ClusterIP   10.104.246.121           80/TCP    36s  [root@vms81.liruilongs.github.io]-[~/ansible/liveness-probe]  $kubectl get pods -o wide NAME             READY   STATUS    RESTARTS   AGE   IP             NODE                         NOMINATED NODE   READINESS GATES pod-liveness     1/1     Running   0          24m   10.244.70.50   vms83.liruilongs.github.io               pod-liveness-1   1/1     Running   0          23m   10.244.70.51   vms83.liruilongs.github.io               pod-liveness-2   1/1     Running   0          23m   10.244.70.52   vms83.liruilongs.github.io              
  测试SVC正常,三个POD会正常 负载  [root@vms81.liruilongs.github.io]-[~/ansible]  $while true; do curl 10.104.246.121 ; sleep 1 > done pod-liveness pod-liveness-2 pod-liveness pod-liveness-1 pod-liveness-2 ^C
  删除文件测试  [root@vms81.liruilongs.github.io]-[~/ansible]  $kubectl exec -it pod-liveness -- rm  -rf /tmp/  [root@vms81.liruilongs.github.io]-[~/ansible]  $kubectl exec -it pod-liveness -- ls /tmp/ ls: cannot access "/tmp/": No such file or directory command terminated with exit code 2  [root@vms81.liruilongs.github.io]-[~/ansible]  $while true; do curl 10.104.246.121 ; sleep 1; done pod-liveness-2 pod-liveness-2 pod-liveness-2 pod-liveness-1 pod-liveness-2 pod-liveness-2 pod-liveness-1 ^C
  会发现pod-liveness的pod已经不提供服务了 kubeadm 中的一些健康检测
  kube-apiserver.yaml中的使用,两种探针同时使用  [root@vms81.liruilongs.github.io]-[~/ansible]  $cat /etc/kubernetes/manifests/kube-apiserver.yaml | grep -A 8 readi     readinessProbe:       failureThreshold: 3       httpGet:         host: 192.168.26.81         path: /readyz         port: 6443         scheme: HTTPS       periodSeconds: 1       timeoutSeconds: 15  [root@vms81.liruilongs.github.io]-[~/ansible]  $cat /etc/kubernetes/manifests/kube-apiserver.yaml | grep -A 9 liveness     livenessProbe:       failureThreshold: 8       httpGet:         host: 192.168.26.81         path: /livez         port: 6443         scheme: HTTPS       initialDelaySeconds: 10       periodSeconds: 10       timeoutSeconds: 15  [root@vms81.liruilongs.github.io]-[~/ansible]  $

关于小屏手机?从历史发布的手机中我们可以发现,国内手机厂商没有一家坚持做小屏幕手机。那么是没有人买小屏手机吗?从销量上看iPhone11iPhone12iPhone13销量分别为500万300万JAVA并发之AtomicInteger原理分析本篇文章我们以AtomicInteger为例子,主要讲解下CAS(CompareAndSwap)功能是如何在AtomicInteger中使用的,以及提供CAS功能的Unsafe对象首发骁龙8Gen1,摩托罗拉edgeX30体验,2999元起售值不值?此前在各大网络平台上,都传出消息说小米会首发新一代高通芯片,但没想到摩托罗拉却出来截胡了,抢在12月09日这天发布新机摩托罗拉edgeX30,并且把价格压到了极致,仅为2999元的独显66W,iqooneo6新增16G512G版本,真香今年手机市场上的厂商发展之中,很多厂商都有着非常的大的市场改变,其中可以说在发展处理器中改变最大的三家厂商,完全可以说是翻天覆地的改变。首先就是荣耀,从离开了华为之后,其就走上了女电脑开机慢?三个步骤帮你搞定,电脑瞬间秒开机电脑开机龟速的抓狂心情,相信很多小伙伴都有过吧!等它转完圈进入界面,仿佛一个世纪过去了其实电脑开机慢除了电脑本身的硬件问题外,垃圾文件多以及不必要的设置开启太多也会导致电脑开机慢。未来的第三块屏幕?OPPOAirGlass亮相!兼具轻盈与显示高清12月14日,近期备受关注的OPPO未来科技大会2021正式在深圳举行,大会上OPPO与往年一样为我们带来了很多惊喜,其中就包括了面向探索XR世界的OPPO新一代智能眼镜OPPOAOPPO跨越挑战者深渊报复性增长红利以及全球市场由4G向5G迁移,并没有给存量手机产业带来明显的改善,相反,全球半导体短缺之下,行业内卷之势愈加明显。而中国手机厂商正在加大对硬科技的投入。这其中,OPP精品华为管理培训介绍华为的成功是有道理的,看看华为的培训你就知道!华为管理培训介绍提升组织的执行力提升绩效治理的绩效情境领导变革治理及华为实践现代人力资源治理新趋势人力资源治理以人致胜课程介绍华为干部俄官员最新披露美民主峰会讨论内容据俄罗斯卫星通讯社报道,俄罗斯联邦安全会议第一副秘书阿韦里亚诺夫12日表示,美国正在为建立类似北约的数字联盟作准备,其联盟中的主权国家将被命令按照美国谷歌等IT巨头制定的规则行事。美借民主峰会推动建立未来互联网联盟,外交部新瓶装旧酒12月9日,外交部发言人汪文斌主持例行记者会。记者提问据报道,美国计划在领导人民主峰会期间,推动与会各国就未来互联网联盟达成共识。报道称,联盟旨在建立以美国为标准的开放安全可靠的互FinalAudioAGCOTSUBU评测超越索尼新日系全球首款肌理感真无线关于日本耳机颜值新代表FinalAudio与AG子品牌。在日本HiFi圈品牌,除了索尼铁三角JVCSTAX这些老牌HiFi耳机品牌。也有新一代势力强势品牌FinalAudioDes
三星QX3B量子点游戏电视来了量子点高画质4个HDMI2。1三星最新量子点游戏电视QX3B系列来了!作为去年京东定制款QX2的升级版,在保留量子点高画质4K120Hz高刷新和自动低延时模式同时,游戏体验上更进一步优化升级,加入了景深增强护眼如果给你一千万而且让你回到2008年,你会用这一千万做什么?哪有的事?这是如果,现实中不存在有一千万块钱给我支配的情况。做梦都没有做过。笑哭2008茅台每股不过80多块钱,如果当年就有一千万块钱,那我就买十二万股茅台股票,那么到现在就是九十墨子号实现一千二百公里地表量子态传输科技前沿光明日报合肥5月6日电(记者丁一鸣马荣瑞通讯员王敏)记者从中国科学技术大学获悉,该校潘建伟院士及其同事彭承志陈宇翱印娟等利用墨子号量子科学实验卫星,首次实现了地球上相距12恒大斥资8。47亿竞得一工业用地,许家印新能源造车梦更进一步4月1日消息,据广州市公共资源交易中心网站消息显示,中国恒大国能新能源汽车(广东)有限公司今日成功竞得一块广州南沙工业用地,编号为NANSHA2019NGY2,成交价格8。47亿元有女朋友的兄弟要小心了,腾讯开启特殊需求封号服务。今天上午十二点前,腾讯游戏安全中心微博发布了一条消息,为了更好的满足女性玩家的特殊需求,腾讯推出了一项新功能特殊需求封号,指的是对于过分沉迷游戏的玩家,导致忽略伴侣(不限男女)的玩微服务架构实践你只懂docker与springboot就够了吗?微服务并不是单独存在的,为了更好地实现微服务架构,需要整合许多组件混搭使用,方能打通任督二脉,天下无敌。网上很多大拿讲了微服务治理的内容,也有人单方面讲微服务的,比如springb蘑菇街新规同组同款商品同时间只保留一个作者亿邦动力网来源亿邦动力网201904011200亿邦动力讯4月1日消息,为了更好服务于广泛的用户群体,满足用户的消费诉求,蘑菇街平台对商品同款合并规则进行了调整。亿邦动力获悉,补贴退坡,这个行业终于迎来了洗牌前夜备受关注的新能源汽车财政补贴调整政策终于落地了!3月26日,财政部工业和信息化部科技部国家发展改革委联合发布关于进一步完善新能源汽车推广应用财政补贴政策的通知(下文中统一简称为通知8GB内存价格下滑至300元,供过于求,年底恐难再涨如果你选择在2018年开春组装台式电脑,那么恭喜你,你肯定经历了一场纠结万分的割肾之旅。不同于购买智能手机如iPhone手机的一刀割完,台式PC的几大硬件可能会让玩家几度肉颤。比如国美通讯山东龙脊岛没有获悉任何有关黄光裕出狱的相关信息国美通讯澄清公告,截至本公告披露日,山东龙脊岛没有获悉任何有关黄光裕先生出狱的相关信息,不存在应披露而未披露的信息和事项,控股股东将严格按照有关法律法规的规定和要求,配合本公司及时你还在点外卖?有人开始用外卖买菜了!一年中老年用户涨500日前,在2019阿里本地生活生鲜伙伴大会上,饿了么副总裁熊斌表示,饿了么口碑为生鲜合作伙伴打造的是繁荣的开放平台,让大家都能从中获益。未来,外卖买菜业务也将搭乘开放平台的快车全线推