gitee使用自动部署
1. 开通开通gitgo 就行了,会有每个月2000分钟的免费时长,够用的了 选择创建分支,默认创建三个分支 2. 配置以master为例 默认有编译和发布两个流程 2.1. maven构建流程 名称和jdk版本一般不用管 暂存构建物,这里默认 私有仓库这里看是否用了自己的私有仓库,若有则需要添加配置,无则不管私有仓库这,第一次点击添加证书, 跳转之后点击创建凭证 选择Maven Settins 补全信息,这里主要是输入好maven仓库的地址和访问maven的账号密码,仓库作用域选择好需要部署的工程 回到流水线maven配置这里,将添加好的私有仓库选中,就可以了 构建缓存这里不选也不影响啥 2.2. 上传制品上传制品这里主要选择上传文件,选择上一步maven构建中的暂存构建物唯一标识,制品名称为工程名称,后续打包会以此打成压缩包 2.3. 发布发布主要是增加工程版本,生成tag等,这里可以不用 2.4. 主机部署主机部署主要需要选择好执行的主机组,配置好部署脚本 2.4.1. 添加主机在任务信息 -> 执行主机组...
6-SpringCloudGateway 自定义路由
1. 序言除了使用官方给的配置文件配置路由,我们也可以自己在代码中配置路由功能 2. 实现1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859@Configurationpublic class RouteConfig { @Autowired ProviderServiceGatewayFilterFactory providerServiceGatewayFilterFactory; /** * 代码配置路由 */ @Bean public RouteLocator customRouteLocator(RouteLocatorBuilder builder) { return builder.routes() /* uri: http://example.com ...
5-SpringCloudGateway 自定义断言器
1. 序言除了自定义过滤器,官方也开放了断言扩展,可以自定义断言器 2. 实现2.1. java代码实现接口AbstractRoutePredicateFactory 123456789101112131415161718192021222324252627282930313233@Component@Slf4jpublic class TenantRoutePredicateFactory extends AbstractRoutePredicateFactory<TenantRoutePredicateFactory.Config> { public TenantRoutePredicateFactory() { super(Config.class); } @Override public Predicate<ServerWebExchange> apply(Config config) { return new GatewayPredicate()...
4-SpringCloudGateway 自定义过滤器
1. 序言基本上gateway自带的过滤器都能满足我们的使用,除了使用自带的,我们也可以自定义过滤器实现自己的逻辑 2. 工程搭建基本步骤不变,只是在配置环节有不一样 3. 全局过滤器全局过滤器只需要实现GlobalFilter即可,所有的请求都会走此过滤器,用于做全局的事件处理,如权限验证、日志记录、租户校验等…… 12345678910111213141516171819@Componentpublic class LogGlobalFilter implements GlobalFilter { private static final Logger logger = LoggerFactory.getLogger(RuntimeException.class); @Override public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) { StopWatch watch = new...
3-SpringCloudGateway 路由配置
1. 序言Gateway配置文件非常强大,基本已经包含了大部分的使用场景,我们一般直接通过配置文件就可以完成配置了 2. 开启根据微服务名转发1spring.cloud.gateway.discovery.locator.enabled=true 开启此配置后会根据链接的path第一层寻找对应的微服务名,并且转发后会将第一层微服务名给去掉,保留后面的内容发给后续应用,如: provider注册的服务名为CloudGatewayProvider,提供的服务路径为/providerController/hello,自身的servlet.context-path为/cloud-provider,如图: nacos controller application.yml 通过访问以下路径可以得到provider数据,类似于nginx的转发重写功能 1localhost:8101/CloudGatewayProvider/cloud-provider/providerController/hello 3. 手动配置路由映射此种方式手动配置路由映射,如: 12345678spring: ...
2-SpringCloudGateway 工程搭建
1. 序言2. 搭建2.1. gateway本体项目2.1.1. pom本项目的版本均基于SpringCloud Hoxton.SR9 和SpringCloudalibaba 1234567891011121314151617<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Hoxton.SR9</version> <type>pom</type> <scope>import</scope></dependency><!--************spring-cloud相关************--><!--整合spring cloud alibaba--><dependency> ...
1-SpringCloudGateway开篇
1. 序言引用 1.1. 背景微服务架构中,通常一个系统会被拆分为多个微服务,面对这么多微服务客户端应该如何去调用呢?如果没有其他更优方法,我们只能记录每个微服务对应的地址,分别去调用,但是这样会有很多的问题和潜在因素。 客户端多次请求不同的微服务,会增加客户端代码和配置的复杂性,维护成本比价高。 认证复杂,每个微服务可能存在不同的认证方式,客户端去调用,要去适配不同的认证, 存在跨域的请求,调用链有一定的相对复杂性(防火墙 / 浏览器不友好的协议)。 难以重构,随着项目的迭代,可能需要重新划分微服务 为了解决上面的问题,微服务引入了 网关 的概念,网关为微服务架构的系统提供简单、有效且统一的API路由管理,作为系统的统一入口,提供内部服务的路由中转,给客户端提供统一的服务,可以实现一些和业务没有耦合的公用逻辑,主要功能包含认证、鉴权、路由转发、安全策略、防刷、流量控制、监控日志等。 1.2. 网关在微服务中的位置 1.2.1. 网关对比 Zuul...
seata 开篇
1. 序言seat是一个分布式事务协调中心,详细见官方文档 官网 2. Seata 是什么?Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。 2.1. AT 模式2.1.1. 前提基于支持本地 ACID 事务的关系型数据库。Java 应用,通过 JDBC 访问数据库。 2.1.2. 整体机制两阶段提交协议的演变: 一阶段:业务数据和回滚日志记录在同一个本地事务中提交,释放本地锁和连接资源。 二阶段: 提交异步化,非常快速地完成。 回滚通过一阶段的回滚日志进行反向补偿。 2.2. 写隔离 一阶段本地事务提交前,需要确保先拿到 全局锁 。 拿不到 全局锁 ,不能提交本地事务。 拿 全局锁 的尝试被限制在一定范围内,超出范围将放弃,并回滚本地事务,释放本地锁。 以一个示例来说明: 两个全局事务 tx1 和 tx2,分别对 a 表的 m 字段进行更新操作,m 的初始值 1000。 tx1...
7-SpringCloudAlibaba 引入sentinel
1. 序言Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。 丰富的应用场景: Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、实时熔断下游不可用应用等。 完备的实时监控: Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运行情况。 广泛的开源生态: Sentinel 提供开箱即用的与其它开源框架/库的整合模块,例如与 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相应的依赖并进行简单的配置即可快速地接入 Sentinel。 完善的 SPI 扩展点: Sentinel 提供简单易用、完善的 SPI 扩展点。您可以通过实现扩展点,快速的定制逻辑。例如定制规则管理、适配数据源等。 官方文档 2. 工程搭建2.1. pom12345<!--引入sentinel starter 里面定义好了web 和...
5-sentinel数据持久化
1. 序言sentinel数据默认保存在内存中,dashboard服务端和使用客户端均是如此。客户端需要在启动时通过编码加载,改动时需要修改代码,无法做到配置化。 这里改造分为服务端和客户端的改造 服务端改造:从nacos中获取规则数据,保存时存入nacos中 客户端改造:启动时从nacos中获取数据 2. 改造2.1. 服务端sentinel-dashboard改造这里只对push模式改造,其他两种因有不完全缺陷,也不适合生产,就不考虑了。 sentinel官方修改文档 主要修改建议 民间修改文档 push模式改造需要改造sentinel-dashboard,dashboard应该与nacos交互存储,持久化至nacos中 2.1.1. 下载sentinel-dashboard工程https://github.com/alibaba/Sentinel 下载工程,拷贝出sentinel-dashboard 切换项目只能得到1.8.6的版本,这里使用1.8.6版本,正好也比1.8.1版本好改造 2.1.2. 改造项目2.1.2.1....
