本文目录导航:
flyway是什么意思
Flyway是一个英语单词,它有两个关键的含意和用法。
微服务架构通常 - 你只懂docker与spring boot就够了吗?
背景
随着公司一年多的生长,咱们曾经开发了数十个名目了,后盾有JAVA的有PHP的,为了更好地优化开发与治理效率,各技术大牛小牛们时常启动强烈的PK,碰撞出了许许多多爱的火花,比如其中之一:微服务虚践
设计
只有要有一套base微服务,base微服务生成业务系统微服务虚例,供各个业务系统调用;业务系统不间接调用base,只能调用微服务INSTANCE。
这是运维的疑问,让运维去处置,运维经常使用工具,实践也不算艰巨,反正执行的都是脚本,不须要手工操作。
单点缺点影响全局,咱们选用了稳固更关键;另外saas的话,为了应答不同行业,会存在适度设计的嫌疑;私有化更容易。
调用逻辑
设计理念
非模块化,谈不上微服务,比如咱们上方的用户微服务、产品微服务、地址微服务等,都须要先模块化,为了更好地落实开发,你或许不得不,边模块化边微服务,模块化的时刻要留意,不能无关联查问,包要齐全独立,到时刻微服务能力拆开。
松耦合示意咱们模块之间不间接依赖,有形态,可以独自地为外界提供服务;
强内聚是指,咱们只管要拆分红一个个小的微服务,但是也要思考某些性能的强关联性,比如一个凳子是由四个脚与一个板组成,咱们不能把四个脚与板分销售卖,就没无心义了。
开发
spring-boot :较springmvc愈加繁复了,springmvc有一大零的性能文件,比如spring-servlet、spring-mybatis、与,这些在spring-boot都不须要了,只有要弱小的注解性能即可,boot更适合微服务。
spring-cloud :外面有比拟多组件,用于支持微服务,比如spring cloud config一致性能中心,用于多环境的性能文件性能,大家再也不用为多个微服务的开发、测试与消费环境的性能文件治理而忧虑了;spring cloud eureka用于服务注册与发现,上方有独自引见;其它的组件大家可以去官方看看,这里不逐一引见,总之假设JAVA平台,尽量经常使用spring体系的内容。
咱们驳回mysql,由于咱们是运行多,但数据量单表并不算大,多则不超越百万,mongodb也试验过,开发十分快,也十分灵敏,但由于不是相关型数据库,保养老本较高。
RESTFUL :URL的资源与操作解耦,让URL愈加合乎语义,上百个接口也十分好治理,网上有很多文章讲得十分透彻,这玩意不是特意好了解,要多领悟,在名目中通常,就有矛塞盾开的觉得,这里不做具体引见。
接口文档swagger :比起传统全手工写接口文档,swagger有一致的输入格局,不论是几团体写的;swagger驳回写代码的模式来写接口文档,以前修正了代码,还必定关上wiki手工修正接口文档,如今只有要修正一下代码即可,程序员更情愿修正了,老本更低了,前端与其它调用者不会天天吼着,你这接口咋又变了,新加的字段是啥意思呀。
RocketMQ:不时纠结kafka与rocketMQ,最终选用了RocketMQ
为了性能上方的思考,尽量经常使用异步编程,比如注册送活动券,那么注册成功就可以给用户前往注册成功了,但是送活动券可以是异步伐用的,不阻塞注册的线程。
微服务框架下,日志无法能还扩散在各个服务节点上,必定有一致的日志中心。
ELK是一个实时日志剖析平台,就是将各个服务的日志汇总于日志中心,而后可以依照系统、节点等启动搜查,除上述搜查条件外,咱们还在各个微服务虚现了依照业务id(一次性恳求生成一个业务id)与用户id搜查日志,繁难跟踪与定位疑问。
当然或许有愈加轻量级与好用的disconf或spring cloud config,但是咱们有php开发的运行,以上二者都不支持。
假设全是JAVA运行,驳回disconf还是十分不错的。
测试
每个程序员都有这样的教训,刚上线,客户又反应了bug,原来是咱们修正某特性能代码的时刻,造成了其它性能的bug,每次上线心里都没底;这就表现了接口测试的必定性,尤其是每次版本更新的时刻,都须要执行一遍,以防修正某个接口造成其它接口报错,比手动测试靠谱许多。
部署
docker曾经众所周知了,这是继虚构机以后,又一严重改革,将一切的单个微服务都放在docker中,这样你何时何地想部署,间接丢过去就OK了,快到爆。
用几句繁难的命令就搞定了负载平衡,而且还可以平滑更新,版本更新的时刻,大家就不用通知客户:系统通知,某日某晚00:00-08:00我行处于系统更新保养中,大家不要去取钱哦,由于你或许取不进去,呵呵。
更新
咱们驳回工具flyway,可以对数据库脚本启动版本控制。
传统的版本更新,
1.开发推代码并同时记载自己提交了哪些文件;
2.名目经理依据svn查看文件,并打包成war包;
3.投到测试环境让测试公司测试;
4.中途修正了文件,或许须要从新打包;
我都写不下去了,名目经理像个超人似的。
如今用继续集成(CI)十分繁难,咱们用的工具是Jenkins,推完代码,点几下按钮就实现了上线,不论是测试环境,还是消费环境都十分繁难,不然名目经理核查文件眼睛都绿了。
开头
本文关键是引见微服务开发上的选型,关于细则不做深究,大家感兴味可以了解下各个组件。
当然,咱们的选型难免正确,不同场景运行或许齐全不同,本文仅供参考。
Flyway 数据库版本治理 | 专业处置打算
飞way:数据库版本治理的理智选用
在当今数据驱动的环球中,数据库版本治理至关关键。
Flyway,这款开源神器,以其出色的特性和易用性锋芒毕露。
它不只支持SQL脚本和Java代码,而且无需繁琐的性能,为开发者提供了高效、牢靠的处置打算。
让咱们一同探求它的弱小性能和实践运行。
外围性能与长处
实战指南
在实践运行中,例如与MySQL 8.0配合,你可以经过Maven轻松增加Flyway外围依赖和MySQL驱动,而后创立迁移文件,如src/main/resources/db/migration/V1__Create_person_。
启动运行时,只有在主启动函数中调用(),执行数据迁移。
接着,创立新的迁移文件V2__Add_,并在其中编写SQL语句,如拔出数据。
为了更好地集成到SpringBoot名目中,增加spring-boot-starter-jdbc、mysql-connector-java和flyway-core依赖,性能数据库衔接,如jdbc:mysql://127.0.0.1:3306/flyway...
当你的名目中曾经成功创立了flyway_schema_history和PERSON表,数据迁移就功败垂成。
更新与留意事项
更新时,只有在db/migration目录下增加新的SQL文件。
但是,务必设置baseline-on-migrate: true,防止因漠视V1__扫尾文件造成的失误。
假设遇到疑问,可以思考删除flyway_schema_history表,而后设置baseline-version: 0,或许调整迁移文件名的命名规定,遵照如V1.0_create_person_的命名规范。
SpringBoot 2.4.4-2.6.0版本的flyway集成对应相关为:2.4.4-7.1.1(Oracle12.1.0.2企业版或许不实用),而2.6.0-8.0.4版本则兼容Oracle12.1.0.2。
在编写SQL脚本时,务必遵照上述命名商定。
结语与资源
深化钻研Flyway、Liquibase等数据库版本治理工具,以及相关教程和博客,将让你的数据库治理愈加随心所欲。
飞way,无疑是优化名目稳固性和可保养性的关键工具。
如今就执行起来,为你的名目削减这一弱小武器吧!