微服务架构及概述
微服务架构及概述 序号 内容 1 架构的演进史 2 微服务诞生背景 3 微服务架构的优点与挑战 4 微服务的设计原则 5 如何拆分微服务 一、架构的演进史1.1 传统架构 传统构架是部署在一个tomcat上的,Tomcat 默认配置的最大请求数是 150,也就是说同时支持 150 个并发,当某个应用拥有 250 个以上并发的时候,应考虑应用服务器的集群。因此当用户达到一定数量的时候就要考虑到集群。 1.2 Tomcat集群 负载均衡一般通过nginx,假设每台服务器能支持150的并发,上面的图中能最大支持300并发。但是配置集群最大的问题就是session共享问题,tomcat的节点越多,它们之间的关系就越复杂。当tomcat集群中节点数量增加,服务能力先增加后下降。所以集群中节点数量不能太多,一般也就5个左右。 1.3...
内网穿透工具Frp
内网穿透工具FrpFRP官方首页: https://diannaobos.com/frp/ FRP项目地址: https://github.com/fatedier/frp FRP官方文档: https://gofrp.org/docs/overview/ 这个网址经常进不去!! 由于官方文档很细致,所以这里就简单说下一些问题。 0、内网穿透可以干什么 非学术的说法: 通常个人电脑无论是连接WIFI上网还是用网线上网,都是属于局域网里边的,外网无法直接访问到你的电脑,内网穿透可以让你的局域网中的电脑实现外网访问功能针对上面这句话中出现的内网和外网。我在以下作了解释。局域网:(局域网(Local Area Network,LAN)是指在某一区域内由多台计算机互联成的计算机组。局域网是封闭型)外网:(广域网(WAN,Wide Area Network)也称远程网(long haul...
springboot分模块开发
springboot分模块开发为什么需要分模块先介绍下背景,项目为什么需要用多模块?springmvc难道还不够? (1)设计模式真言:“高内聚、低耦合”,springmvc项目,一般会把项目分成多个包:controller、service、dao、util等,但是随着项目的复杂性提高,想复用其他一个模块的话,因为是包的形式,剥离出来会比较困难,耦合性有点强,常用的方法就是复制代码修改,但是这样会做很多无用功与增加出错几率。 (2)springboot多模块简单来说,就是把按包分模块的模式,借助maven升级到jar的方式,抽象性更加强了,假如jar再升级到到war或者多个集合jar,就成微服务了( springcloud入门系列),在多模块jar模式下可以将某个jar拿出来对外共用,能大大提高代码复用率与开发效率。 案例最近写了一个工具箱的项目(未完成),一开始并没有采用多模块的方式,写了一部分代码之后,发现代码结构比较乱,因为是工具箱肯定有许多工具,比如...
Jpa@Column注解的name失效的问题
Jpa@Column注解的name失效的问题1.问题 首先我jpa使用的spring-boot-data-jpa 。springboot 版本 2.2.6.RELEASE jpa也没有去配置命名策略,使用的默认驼峰转下划线。 表结构大致如下 1locationId | locationName 实体如下 1234567891011121314151617181920212223242526@Getter@Setter@NoArgsConstructor@Accessors(chain = true)@Entity@Access(AccessType.FIELD)@Table(name = "FDYJXH_INSTRUCTOR_TALK_LOCATION")public class StudentTalkLocation implements Serializable { private static final long serialVersionUID = -95507753868472868L; /** *...
ES5中的类和静态方法和继承
ES5中的类和静态方法和继承一、类的定义123456function Person(){ this.name='张三'; this.age=20;}var p=new Person();alert(p.name); 二、构造函数和原型链里面增加方法12345678910111213141516function Person(){ this.name='张三'; /*属性*/ this.age=20; this.run=function(){ alert(this.name+'在运动'); }}//原型链上面的属性会被多个实例共享 构造函数不会Person.prototype.sex="男";Person.prototype.work=function(){ alert(this.name+'在工作');}var p=new...
mybatis-plus二级缓存
mybatis-plus二级缓存在mybatis-plus 中 一级缓存、二级缓存都是默认开启了的。 1、一级缓存一级缓存又被称为 SqlSession 级别的缓存。 SqlSession是什么?SqlSession 是SqlSessionFactory会话工厂创建出来的一个会话的对象,这个SqlSession对象用于执行具体的SQL语句并返回给用户请求的结果。 SqlSession级别的缓存是什么意思?SqlSession级别的缓存表示的就是每当执行一条SQL语句后,默认就会把该SQL语句缓存起来,也被称为会话缓存 123456@Test public void run(){ Node node = nodeService.findById("17121e5a7333"); Node node1 = nodeService.findById("17121e5a7333"); Node node2 =...
成长是不断告别(未完成)
成长是不断告别前言:
mongodb用户操作
新增用户123456db.createUser( { user: "root", pwd: "maoyujie132", roles: [ { role: "root", db: "admin" } ] } )db.createUser( { user: "yapi", pwd: "yapi6666", roles: [ { role: "readWrite", db: "yapi" }, "readWrite" ] } )
数据库事务基本知识
数据库事务基本知识一、数据库事务的基本特性事务是区分文件存储系统与NoSQL数据库重要特性之一,其存在的意思是为了保证即使在并发的情况下也能正确的执行CRUD操作、怎么才算正确的呢?这时提出了事务需要保证的4个特性即 ACID A:原子性(Atomicity) 事务中的各项操作,要么全做要么全不做,任何一项操作的失败都会导致整个事务的失败。 C:一致性(consistency) 事务结束后系统状态是一致的 I: 隔离性(isolation) 并发执行的事务彼此无法看到对方的中间状态 D:持久性(durability) 事务完成后所做的改动都会被持久化,即使发生灾难性的失败。 二、事务的隔离级别在实际应用中,数据库中的数据是要被多个用户共同访问的,在多个用户同时操作相同的数据时,可能就会出现一些事务的并发问题,具体如下。 1、脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据 2、不可重复读:事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果...
Spring对事务的支持
Spring对事务的支持首先我们要知道事务的实现是由数据库实现的,spring只是让我们更好的使用事务,如果你的数据库不支持事务,即使你在spring中使用了事务也不起作用。 一、spring的事务介绍spring框架中对事务的支持有两种 编程式事务管理 声明式事务管理(推荐) 1.1 编程式事务编程式事务管理:事务的相关操作完全由开发人员通过编码实现。所以编程式事务管理是侵入性事务管理,使用TransactionTemplate或者直接使用PlatformTransactionManager,对于编程式事务管理,Spring推荐使用TransactionTemplate。但是我们基本不推荐使用编程式事务。 下图展示的是使用原生jdbc对编程式事务的实现,完全有程序员来实现。 12345678910try { connection.setAutoCommit(false); empDao.executeInsert(user); empDao.executeInsert(user2); ...