微服务架构说明.md
简介
微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。
WHY (为什么要这么做)
- 使用传统的整体式架构(Monolithic Architecture)应用开发系统,如CRM、ERP等大型应用,随着新需求的不断增加,企业更新和修复大型整体式应用变得越来越困难;
- 随着移动互联网的发展,企业被迫将其应用迁移至现代化UI界面架构以便能兼容移动设备,这要求企业能实现应用功能的快速上线;
- 随着应用云化的日益普及,生于云端的应用具有与传统IT不同的技术基因和开发运维模式;
REQUIREMENT (需求)
- 设计微服务架构
- 实现微服务架构方案
- 后续需求使用微服务架构实现
TODO (做了什么)
度分布式配置管理平台Distributed Configuration Management Platform部署
阿里云RPC远程服务调用方案 搭建
前后端分离
SpringBoot 实现微服务
EXAMPLE (案例)
权限管理系统
- 统一登录平台登录之后,对当前session的管理,以及用户权限的访问
- 当前用户信息注入
app发布平台
- app 统一发布,统一管理
- 各个渠道之间不同发包
文件上传
- 文件上传统一处理,提供调用接口
HOWTO (如何去做)
Mysql 数据库安装配置
添加用户和用户组
groupadd mysql
useradd -g mysql mysql
passwd mysql #设置mysql用户密码
获取mysql
http://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz
权限处理
chmod 777 mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz
解压文件
tar -zxvf mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz ./mysql-5.7.16
分配权限
chown mysql:mysql ./mysql-5.7.16
设置mysql配置文件
cp support-files/my-default.cnf ./my.cnf
vi my.cnf
配置文件内容
[client]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
#log=/home/mysql/mysql-5.7.12/log/mysqld_common.log
log-error=/home/mysql/mysql-5.7.16/log/mysqld_err.log
log-bin=/home/mysql/mysql-5.7.16/log/mysqld_bin.log
character-set-server=utf8
init_connect='SET NAMES utf8'
lower_case_table_names=1
max_allowed_packet = 1024M
basedir=/home/mysql/mysql-5.7.16
datadir=/home/mysql/mysql-5.7.16/data
port=3306
server_id =mysql.pid
socket =/home/mysql/mysql-5.7.16/mysql
执行安装命令
bin/mysqld --initialize --user=mysql\ --basedir=/home/mysql/mysql-5.7.16 --datadir=/home/mysql/mysql-5.7.16/data
运行结果如下,得到临时密码
启动mysql
bin/mysqld_safe --defaults-file=./my.cnf
连接mysql
bin/mysql -uroot -p -S /home/mysql/mysql-5.7.16/mysql.sock
然后输入生成的临时面
修改密码设置数据库
set password=password('root'); #修改密码
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION; #设置远程访问
FLUSH PRIVILEGES; #刷新
create user pmpf identified by 'pmpf'; #新增用户
grant all privileges on recon.* to 'pmpf'@'%';#给pmpf分配recon库的所有权限
添加启动项
cp support-files/mysql.server /etc/init.d/mysql
然后编辑mysql文件,修改如下部分
basedir=/home/mysql/mysql-5.7.16
datadir=/home/mysql/mysql-5.7.16/data
conf=/home/mysql/mysql-5.7.16/my.cnf
redis 安装配置
获取redis
wget http://download.redis.io/releases/redis-3.2.6.tar.gz
解压redis
tar -zxvf redis-3.2.6.tar.gz
编译
cd redis-3.2.6 #进入目录
make #编译
设置redis
mkdir /usr/redis #创建redis操作目录
cp src/redis-server src/redis-cli /usr/redis/ #复制redis服务和命令
cp redis.conf /usr/redis/ #复制redis配置文件
cd /usr/redis
redis-server redis.conf #启动redis
创建快捷键
vi ~/.bashrc
alias redis='/usr/redis/redis-cli' #添加快捷键
source ~/.bashrc #使生效
zookeeper 搭建
添加用户和用户组
sudo groupadd zookeeper #添加用户组
sudo useradd zookeeper -g zookeeper #添加用户
获取ZooKeeper文件
wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz
解压ZooKeeper
tar -zxvf zookeeper-3.4.9.tar.gz
创建ZooKeeper目录
mkdir -p /home/zookeeper/local/zookeeper/data #创建所需data目录
mkdir -p /home/zookeeper/local/zookeeper/log #创建所需log目录
创建配置文件
cp -r conf/zoo_sample.cfg conf/zoo.cfg
修改配置文件内容如下
dataDir=/home/zookeeper/local/zookeeper/data
dataLogDir=/home/zookeeper/local/zookeeper/log
启动zookeeper服务
sh bin/zkServer.sh start #启动zookeeper
sh bin/zkServer.sh status #查看状态
sh bin/zkServer.sh stop #停止服务
检查端口是否监听
netstat -lpn | grep 2181