Java框架
文章平均质量分 96
芸丿兮
这个作者很懒,什么都没留下…
展开
-
微服务架构(一)架构高可用:异地多活与单元化
外卖业务没有按照用户id维度划分单元,原因是外卖的业务场景和上面的支付业务不同,他一共有3个最重要的角色,分别是用户、商家和骑手,如果按照用户id划分单元,那么同一地方的用户、商户、骑手可能被划分到不同 单元,跨机房调用就比较多,所以为了能让外卖订单在一个单元完成内聚,饿了么采用地域划分,选择地理位置作为划分业务的单元,把地理位置上接近的用户,商户,骑手划分到同一个单元。服务层指RPC调用,在RPC调用的全链路过程中,必须要带上分片数据,然后根据流量管控中心同步过来的分片规则,调用到指定的单元上。原创 2023-10-30 14:58:02 · 1022 阅读 · 0 评论 -
SpringCloud(三)Sentinel、Seata、多级缓存
CAP 也就是 Consistency(一致性)、Availability(可用性)、Partition Tolerance(分区容错性) 这三个单词首字母组合。CAP 定理(CAP theorem)指出对于一个分布式系统来说,当设计读写操作时,只能同时满足以下三点中的两个:C:一致性(Consistency) : 所有节点访问同一份最新的数据副本A:可用性(Availability): 非故障的节点在合理的时间内返回合理的响应(不是错误或者超时的响应)。原创 2023-10-07 14:57:12 · 1166 阅读 · 0 评论 -
SpringCloud(二)Docker、Spring AMQP、ElasticSearch
在使用SpringAMQP时,发送消息的参数类型为Object,因此可以发送任意类型的消息,但是SpringAMQP默认使用的是JDK自带的序列化方式,序列化效率低。IK分词器基于自有的字典进行分词,然后网络热门词汇都是实时更新的,还有些时候,需要对敏感词进行过滤,这时就需要用到IK分词器的拓展和停用字典。index:默认为true,即为每个属性字段都添加倒排索引,实际上有些字段是无需索引的,比如ip,那么就可以将其设置为false。消息被平均的分配给了两个消费者,没有考虑消费者的具体消费能力。原创 2023-10-05 21:46:46 · 1463 阅读 · 0 评论 -
SpringCloud(一)Eureka、Nacos、Feign、Gateway
微服务,又叫微服务架构,是一种软件架构方式。它将应用构建成一系列按业务领域划分模块的、小的自治服务。在微服务架构中,每个服务都是自我包含的,并且实现了单一的业务功能。简单来说,就是将一个系统按业务划分成多个子系统,每个子系统都是完整的,可独立运行的,子系统间的交互可通过HTTP协议进行通信(也可以采用消息队列来通信,如RoocketMQ,Kafaka等)。Feign允许我们在对http请求发送的各个阶段做自定义配置,包含请求发送响应日志、响应结果解码器、请求参数编码器、请求失败重试机制等。原创 2023-10-02 21:24:41 · 1965 阅读 · 1 评论 -
定时任务实现:Timer、Quartz
Quartz 存储任务信息有两种方式,使用内存或者使用数据库来存储,这里我们采用 MySQL 数据库存储的方式,首先需要新建 Quartz 的相关表,sql 脚本下载地址:http://www.quartz-scheduler.org/downloads/,名称为 tables_mysql.sql,创建成功后数据库中多出 11 张表。Quartz是一套轻量级的任务调度框架,只需要定义了 Job(任务),Trigger(触发器)和 Scheduler(调度器),即可实现一个定时调度能力。原创 2023-08-03 14:18:33 · 242 阅读 · 0 评论 -
Java框架学习(三)spring5高级49讲
代理对象实现了目标接口,并在InvocationHandler的invoke方法中添加了增强逻辑,即基于反射,Aware和InitializingBean接口实现的功能,使用Bean后处理器也可以实现,但Aware和InitializingBean是内置接口功能,不依赖外部,是一种内聚的使用方法,而后处理的方法是分模块解耦的,如果其他模块失效,则后处理器的执行也可能失效。解决方法1:使用@Lazy注解,添加在要注入的对象上,该注解仅在使用对象时,才会通过f的代理的方法,创建出f,这样调用的f就是多例的。原创 2023-07-29 16:27:50 · 437 阅读 · 0 评论 -
Java框架学习(二)SSM体系:Spring、SpringMVC、MybatisPlus
对 Prototype Bean 来说,当用户 getBean 获得 Prototype Bean 的实例后,IOC 容器就不再对当前实例进行管理,而是把管理权交由用户,此后再 getBean 生成的是新的实例。若实体类中的属性和表中字段不满足情况1,例如实体类属性为name,而表中字段为username,此时需要在实体类属性上使用@TableFile(“username”)设置属性所对应的字段名。由此得出结论,MyBatis-Plus在确定操作的表时,由BaseMapper的泛型决定,即实体类型决。原创 2023-06-29 16:25:00 · 2670 阅读 · 0 评论 -
Java框架学习(一)JavaWeb基础:Maven、Spring、Tomcat、Mybatis、Springboot
命名规范:Spring官方提供的启动依赖包名命名时都是spring-boot-starter-功能。其他的技术提供的启动依赖包名则会将功能命名置前:功能-spring-boot-starter自定义starter需要完成两个包:启动依赖和自动配置,分别完成依赖管理功能和自动配置功能。第一步:创建两个模块,启动器和自动配置。启动器是依赖于自动配置的:第二步:完成阿里云OSS逻辑功能的实现。原创 2023-06-27 22:26:56 · 951 阅读 · 0 评论