consul

构建安全可靠的微服务 | Nacos 在颜铺 SaaS 平台的应用实践

最后都变了- 提交于 2020-04-05 18:56:52
作者 | 殷铭 颜铺科技架构师 本文整理自架构师成长系列 3 月 19 日直播课程。 关注“阿里巴巴云原生”公众号,回复 “319” ,即可获取对应直播回放链接及 PPT 下载链接。 **导读:**颜铺科技因美业⽽⽣,“颜铺专家”是一款专为美业商家打造的 SaaS 平台,为了能够给商户提供更加安全、稳定、高效的平台,我们在技术方面做了很多尝试,经过几次演进,使系统变得更加稳定可靠。今天主要和大家分享一下颜铺科技的架构演进,以及 Nacos 在颜铺的应用实践。 单体应用时代 上图是我们单体服务时的架构图,分为会员、订单、门店等很多模块,看架构图似乎还算清晰,但是真正看到包结构的时候,真的令人头秃!改起代码特别头痛。单体服务带来的几个挑战: **发布周期慢:**虽然当时业务量不算大,但是代码量很大,业务迭代牵一发而动全身,每次发布需要对整个服务进行重新编译打包部署。特别是最开始在没有构建工具的时候,发布过程需要一堆的命令,总有一种 **“一顿操作猛如虎,定睛一看原地杵” **的感觉。 **协同效率低:**合并冲突多,有时你在前面开心地写代码,而别人在解决冲突时,可能也在开心地删着你的代码,增加了很多的沟通成本。 **稳定性差:**当服务出现故障时,可能会导致整个系统不可用,并且系统不易扩容,当商户搞促销时,可能活动结束了,服务器还没有扩容完成。 **性能差:**因为在单体服务内

KubeSphere排错实战(三)

女生的网名这么多〃 提交于 2020-04-02 05:20:02
接上两篇: 《KubeSphere排错实战》 《KubeSphere排错实战二》 在之后使用kubesphere中也记录了一些使用问题,希望可以对其他人有帮助,一块体验如丝般顺滑的容器管理平台。 十四 异常容器删除 之前利用helm部署过consul,后面删除consul [root@master ~]# helm delete consul --purge 经查看consul的一个pod状态一直为 Terminating [root@master ~]# kubectl get pods -n common-service NAME READY STATUS RESTARTS AGE consul-1 1/2 Terminating 1 24d redis-master-0 1/1 Running 1 17d redis-slave-0 1/1 Running 1 8d redis-slave-1 1/1 Running 1 17d 查看状态 [root@master ~]# kubectl describe pods consul-1 -n common-service Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning FailedSync 3m41s (x4861 over

docker容器优雅停机导致的问题说明

一世执手 提交于 2020-03-31 17:17:48
现象 测试同学反馈页面某功能有时候不能使用。 分析 根据页面返回结果和URL,从开发同学那里了解到该现象是新环境里a服务调b服务返回异常导致的。从多次请求的结果看来,大概50%的几率返回异常。按常理判断如果b服务有多个节点的,可能有其中个别节点异常会导致此现象发生,但是b服务只有一个节点,请求的同时,观察b服务的日志,在a调用结果异常的情况下,b没有任何日志输出,正常情况日志输出返回结果,说明请求没有到达b服务,如果对调用链路不熟的情况下完全可以抓包明确请求是否到达。那么调用失败的请求是去哪里了呢?调用链路如下: 图1 图1可以看出a调用b的地址是从consul-server上拿到的,在consul-server控制台看到的情况入下图: 图2 注:图中gw-mini是服务b 图2 中看到单节点的b服务,在consul注册中心上注册了两个实例,实际是这样吗?继续看下图: 图3 图3中b服务是单节点,ip是10.100.73.72,而consul-server中的另外一个地址10.100.73.75是其他服务的ip地址。在consul上b服务下面的两个实例健康检查都是正常状态,难怪a调用b老是出现异常的返回结果,a拿到的地址list里面有一个地址是不对的。为什么consul上b服务会有两个实例?看看异常实例10.100.73.75的详情,如下图: 图4 健康检查URL是b服务的没错

KubeSphere排错实战(二)

∥☆過路亽.° 提交于 2020-03-24 17:42:43
接上一篇 《KubeSphere实战排除》 近期在使用kubesphere中也记录了一些使用问题,希望可以对其他人有帮助 八 kubesphere应用上传问题 8.1 文件上传413 将应用部署进入kubesphere中,应用中有设置上传文件功能,测试上次异常无法正常上传,文件上传,ingress413报错,kubesphere使用的是ingress-nginx控制器,可以在其中注解添加k-v来支持, 解决方案:应用路由自定义max body size https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#custom-max-body-size 8.2 大文件上传后端504 大文件上传后端响应504解决方案: proxy read timeoutnginx.ingress.kubernetes.io/proxy-read-timeout 九 跨域问题 kubesphere使用ingress-nginx支持跨域,可以参考以下链接在注解中添加 https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#enable-cors

SOFARPC模式下的Consul注册中心

南楼画角 提交于 2020-03-24 12:35:15
Consul大家不陌生,就是和Zookeeper、Nacos一伙的,能够作为微服务基础架构的注册中心,算是比较成熟的组件,和Springcloud集成顺滑, 考虑到Eureka已经停止更新,所以有必要了解下Consul,看看有啥不一样的风景。 准备 : Idea2019.03/Maven3.6.3/Gradle6.0.1/JDK11.0.4/SofaRPC5.6.5/SofaBoot3.3.1 难度 : 新手 --战士--老兵--大师 目标 : SOFARPC模式下使用Consul做注册中心 步骤 : 为了遇见各种问题,同时保持时效性,我尽量使用最新的软件版本。源码地址,其中的 day27:https://github.com/xiexiaobiao/dubbo-project 1 特点 Consul的广告词:让服务发现配置更简单(service discovery & configuration make easy)! 特点: 低延时的服务注册和发现,支持HTTP API 模式访问 内建的DNS模式替代常规静态IP模式,方便动态扩展服务规模 支持多数据中心模式,自动故障转移 完善的健康检查以及坏点路由阻断,具备服务断路器功能 K/V存储,可用于设置属性 2 linux安装 2.1 基础架构 每个运行consul的节点为一个agent,可以是client或server模式

Consul

拜拜、爱过 提交于 2020-03-23 13:32:52
3 月,跳不动了?>>> 官网地址: https://www.consul.io/intro/index.html spring cloud 集成consul : https://www.springcloud.cc/spring-cloud-consul.html 来源: oschina 链接: https://my.oschina.net/u/3677987/blog/3208991

springcloud(一)-初识

戏子无情 提交于 2020-03-22 03:18:59
springCloud简介   尽管springCloud带有“cloud”字样,但它并不是云计算解决方案,而是在SpringBoot基础上构建的,用于快速构建分布式系统的通用的工具集。从技术架构上降低了对大型系统构建的要求,使我们以非常低的成本(技术或者硬件)搭建一套高效、分布式、容错的平台,但Spring Cloud也不是没有缺点,小型独立的项目不适合使用,另外对分布式事务的支持暂时也没有。 springcloud特点   上面我们说了,springCloud是基于springboot开发的,那么springboot拥有的特点,springcloud也都有: 约定优于配置。 适用于各种环境。开发,部署在PC server或各种云环境(例如阿里云,AWS等)均可。 隐藏了组件的复杂性,并提供声明式,无XML的配置方式。 开箱即用,快速启动。 轻量级的组件。springcloud整合的组件大多比较轻量,例如Eureka,zuul,等等。都是各自领域轻量级的实现。 组件丰富,功能齐全。spring cloud为微服务架构提供了非常完整的支持,例如配置管理,服务发现,断路器,微服务网关等。 选型中立,丰富。例如:spring cloud支持使用Eureka,Zookeeper或Consul实现服务发现。 灵活。spring cloud的组成部分是解耦的,开发人员可按需灵活挑选技术选型。

Consul 安装使用

此生再无相见时 提交于 2020-03-20 18:33:55
3 月,跳不动了?>>> Consul 安装使用 简介 Consul,服务注册发现 及 kv存储(配置中心) 文档介绍Consul部署及基本使用操作 基本概念 安装及启动 下载目录 : https://www.consul.io/downloads.html 安装文档 : https://learn.hashicorp.com/consul/datacenter-deploy/deployment-guide 架构文档 : https://learn.hashicorp.com/consul/datacenter-deploy/reference-architecture 1 解压zip文件放到/usr/bin 完成安装,解压后consul文件即可执行文件 运行consu -v查看释放安装完成 2 server agent启动 121主机 leader节点 nohup ./consul agent -server -ui -bootstrap -data-dir=/data/consul -node=agent-1 -client=0.0.0.0 -bind=10.46.235.121 -datacenter=dc1 & 122主机 nohup ./consul agent -server -ui -data-dir=/data/consul -node=agent-2

微服务系列之 Consul 服务注册中心

假如想象 提交于 2020-03-20 11:52:42
3 月,跳不动了?>>> 原文链接: https://mrhelloworld.com/posts/spring/spring-cloud/consul-service-registry/   Netflix Eureka 2.X https://github.com/Netflix/eureka/wiki 官方宣告停止开发,但其实对国内的用户影响甚小,一方面国内大都使用的是 Eureka 1.X 系列,并且官方也在积极维护 1.X https://github.com/Netflix/eureka/releases。 The existing open source work on eureka 2.0 is discontinued. The code base and artifacts that were released as part of the existing repository of work on the 2.x branch is considered use at your own risk. Eureka 1.x is a core part of Netflix's service discovery system and is still an active project. 翻译: 有关 eureka 2.0 的现有开源工作已停止。在 2.x

spring cloud (一):大话 Spring Cloud

早过忘川 提交于 2020-03-19 19:55:18
转自: http://www.ityouknow.com/springcloud/2017/05/01/simple-springcloud.html 研究了一段时间Spring Boot了准备向Spring Cloud进发,公司架构和项目也全面拥抱了Spring Cloud。在使用了一段时间后发现Spring Cloud从技术架构上降低了对大型系统构建的要求,使我们以非常低的成本(技术或者硬件)搭建一套高效、分布式、容错的平台,但Spring Cloud也不是没有缺点,小型独立的项目不适合使用。 Spring Cloud是什么鬼? Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。 微服务是可以独立部署、水平扩展、独立访问(或者有独立的数据库)的服务单元,springcloud就是这些微服务的大管家,采用了微服务这种架构之后,项目的数量会非常多