- Published on
ARTS 第18周
- Authors
- Name
- Jason Yang
- @yangjinlong86
- Algorithm: Reverse String
- Review: shard
- Tip: sharding-sphere
- Share: mycat 从入门到放弃
Algorithm
package org.nocoder.leetcode.solution;
import java.util.Stack;
/**
* 344. Reverse String
* Write a function that takes a string as input and returns the string reversed.
* <p>
* Example 1:
* <p>
* Input: "hello"
* Output: "olleh"
* Example 2:
* <p>
* Input: "A man, a plan, a canal: Panama"
* Output: "amanaP :lanac a ,nalp a ,nam A"
*
* @author jason
* @date 2018/11/4.
*/
public class ReverseString {
public static String reverseString(String s) {
if (s == null || s == "") {
return null;
}
Stack<Character> stack = new Stack<>();
for (int i = 0; i < s.length(); i++) {
stack.push(s.charAt(i));
}
int len = stack.size();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < len; i++) {
sb.append(stack.pop());
}
return sb.toString();
}
public static void main(String[] args) {
System.out.println(reverseString("A man, a plan, a canal: Panama"));
}
}
Review
- 选择分片键
- 架构修改
- 程序修改
- 在分片键,分片(数据库)和物理服务器之间进行映射
- 跨节点事务和ACID事务性
Tip
Sharding-Sphere
近期研究分库分表相关的知识整理和demo https://github.com/yangjinlong86/sharding
Sharding-JDBC定位为轻量级Java框架,在Java的JDBC层提供的额外服务。 它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。
- 适用于任何基于Java的ORM框架,如:JPA, Hibernate, Mybatis, Spring JDBC Template或直接使用JDBC。
- 基于任何第三方的数据库连接池,如:DBCP, C3P0, BoneCP, Druid, HikariCP等。
- 支持任意实现JDBC规范的数据库。目前支持MySQL,Oracle,SQLServer和PostgreSQL。
Share
Mycat 从入门到放弃
技术选型真的是个不简单的事情,考虑到方方面面,对于我们目前的现状,分库分表的计划是这样:
- 为什么要分库分表(结合目前业务发展,未来5年的数据量增长,某些表已经到了600多万,数据库操作的响应速度越来越慢)
- 分库分表原理、形式、规则、事务处理
- 分库分表优势劣势分析
- 技术选型,写demo、测试、性能、技术对比
- 数据库、项目结构调整
- 制定开发计划,投入开发改造
三思!大规模MySQL运维陷阱之基于MyCat的伪分布式架构
- MyCat如何知道数据分片原理,或者说他是如何决定路由路径的?
- 如果需要扩展节点了,并且需要做rebalance,如何来做?
- 全局表是什么东西?
- MyCat究竟做了什么事情?
- 通过SQL语句的变换,实现分布式是不是有点困难?
- 在同一个事务中要修改不同节点的数据是如何处理的?
- MyCat后端数据库的架构是什么,如何保证稳定可靠高可用?
- 分片多了的情况下,性能是如何保证损失最小的?
- 配置文件或者配置库出问题,整个集群会出现什么情况?
- DDL如何进行?
- 据我调研,MyCat还实现了自动故障切换的功能,请问这个靠谱么?
- 在MyCat上面备份是如何做的?能做到恢复一个快照吗?
- 如果已经在使用MyCat了,发现他的风险确实太大了,我如何能下掉呢?
- MyCat的配置复杂吗?上手容易么?
- 最后一个问题,现在做分库分表做得好的有哪些?