我说分布式之分库分表
分布式应用架构下,数据量及接口并发量大幅上升后,单数据库由于无法抗住大流量、高并发的请求,从而造成数据库查询缓慢,频繁锁记录等问题。
为了解决上述的问题,在分布式环境下,常用的应对高并发、大流量场景的方案之一就是分库分表。
拆分主要分垂直和水平两种。
分布式应用架构下,数据量及接口并发量大幅上升后,单数据库由于无法抗住大流量、高并发的请求,从而造成数据库查询缓慢,频繁锁记录等问题。
为了解决上述的问题,在分布式环境下,常用的应对高并发、大流量场景的方案之一就是分库分表。
拆分主要分垂直和水平两种。
本文记录一下如何在springboot2.x环境下,使用thymeleaf上传并显示本地图片
之所以写这个小结是因为今天想做一个运维小工具,用到了图片上传,但是使用了thymeleaf之后,图片无法正确显示。
查找资料之后,发现需要指定虚拟目录,具体步骤如下。
本文我将带领大家在springboot2.x的开发框架中整合alibaba-nacos,实现配置获取及刷新等功能。
引用官方介绍:
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您实现动态服务发现、服务配置管理、服务及流量管理。
Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。
Nacos 是构建以“服务”为中心的现代应用架构(例如微服务范式、云原生范式)的服务基础设施。
可以看到,Nacos主要面向分布式配置级服务发现等领域,由于之前使用过阿里云的ACM配置服务体验良好,而Nacos便是ACM的开源版本,因此我们选择了Nacos作为
业务框架的分布式配置中心。
接下来开始进行Nacos的整合。
在近期的两篇文章中,我带领大家使用springboot2.x整合了dubbo,完成了一个基础的服务化开发框架的搭建。文章链接如下
[dubbo]springboot2.x整合dubbo之使用dubbo-spring-boot-starter
[dubbo]springboot2.x整合dubbo之基于xml整合dubbo2.6.5
但是在生产环境下还是存在一定的问题,比如我们关心的调用链追踪的问题。
本文中,我将继续带领大家基于dubbo2.6.5开发一个轻量级的TraceId获取及传递工具包,实现在dubbo服务的提供方及消费方中 设置/获取/传递 TraceId的需求。
在上篇文章中,我们讲解了如何整合dubbo-spring-boot-starter实现服务化框架的搭建。
文章末尾,我给出了建议,dubbo-spring-boot-starter使用的注解方式的配置不如传统的xml文件灵活,因此我们在线上的开发框架是基于springboot2.x整合了dubbo2.6.5。
通过配置文件的方式更加直观的管理dubbo服务,并对其进行相关的优化操作等。
我们选择的springboot框架的版本为2.1.2.RELEASE,选择了dubbo2.6.5作为基础的整合版本,该版本相比更早的2.5.x修复了较多的遗留bug,且对nacos、sentinel等框架的适配度更好。
话不多说,进入正题。
本文主要讲解在springboot2.x中,整合官方版本的dubbo-spring-boot-starter实现RPC服务化框架的搭建。
首先讲解服务提供方的集成过程,我们在IDEA中通过spring-initializr建立一个springboot应用,使用springboot版本为2.1.2.RELEASE
在pom.xml中引入依赖,坐标如下
<!-- dubbo依赖开始 -->
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency>
<!-- dubbo依赖结束 -->
由于2.0.0版本的>dubbo-spring-boot-starter对应的dubbo版本为2.6.0,因此需要依赖zkclient,后续的高版本使用的zookeeper客户端为apache-curator。
最近使用springboot2.x访问mysql数据库时,报错 java.sql.SQLException: The server time zone value ‘Öйú±ê׼ʱ¼ä’ is unrecognized…
详情可以查看上一篇文章 解决JDBC连接数据库报错java.sql.SQLException: The server time zone value is unrecognized的问题
问题的根本原因在于mysql驱动的版本问题。不同版本的驱动使用的驱动类是不同的,具体如下:
今天在使用mybatis建立到数据库的连接时,出现了一个时区报错。java.sql.SQLException: The server time zone value ‘Öйú±ê׼ʱ¼ä’ is unrecognized…
这也是第一次遇到,感觉挺有意思的,写篇博客记录下。
报错如下:
java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä'
is unrecognized or represents more than one time zone.
You must configure either the server or JDBC driver (via the serverTimezone configuration property)
to use a more specifc time zone value
if you want to utilize time zone support.
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:127)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:95)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:87)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:61)
SkyWalking是一款分布式系统中用于提供分布式追踪功能的开源软件。
从5.x开始,项目进化为一个功能完备的APM(Application Performance Management)系统。被用于追踪、监控和诊断分布式系统,特别是使用微服务架构,云原生或容器技术。提供以下主要功能:
分布式追踪和上下文传输
应用、实例、服务性能指标分析
根源分析
应用拓扑分析
应用和服务依赖分析
慢服务检测
性能优化
它的主要特性如下:
多语言探针或类库
Java自动探针,追踪和监控程序时,不需要修改源码。
社区提供的其他多语言探针
.NET Core
Node.js
多种后端存储: ElasticSearch, H2
支持OpenTracing
Java自动探针支持和OpenTracing API协同工作
轻量级、完善功能的后端聚合和分析
现代化Web UI
日志集成
应用、实例和服务的告警