range

If there were you, the world would be just right

分布式架构的演变过程

1.单机负载
2.单机负载越来越高,数据库服务器和应用服务器分离
3.利用缓存改善网站性能
4.利用集群改善应用服务器性能
5.数据库压力变大,数据库读写分离
6.使用Nosql和搜索引擎缓解读库压力
7.使用cdn和反向代理提高网站性能
8.将应用服务器进行业务拆分
9.数据库水平、垂直拆分
10.服务拆分

什么是分布式

对项目进行分层分割拆分,最终分布在不同服务器上

分布式和集群的区别

分布式:一个业务分布成多个子系统,部署在不同的服务器上
集群: 同一个业务,部署在多个服务器上。做的都是同样的事

分布式和微服务的区别

微服务是分布式的一种实现方式
微服务关注的是分布式中的服务环节,而分布式是关注整个系统闭环

阅读剩余部分...


创建一个新的索引库

PUT /leyou
{
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 0
  }
}

查看索引信息

GET /leyou

删除索引库

DELETE /leyou

添加映射(mappings),ps:等同数据库建表

# 参数说明
PUT /索引库名/_mapping    #(自7.0起取消了Type,不需要加索引类型名,统一为_doc)
{
  "properties": {
    "字段名": {
      "type": "类型",        # 类型:可以是text、long、short、date、integer、object等
      "index": true,        # 是否索引,默认为true
      "store": true,        # 是否存储,默认为false
      "analyzer": "分词器"   # 分词器 使用ik分词器: ik_max_word 会将文本做最细粒度的拆分,ik_smart 会做最粗粒度的拆分
    }
  }
}

# 常用类型
1 String类型,分两种:
  text: 可分词,不可参与聚合
  keyword: 不可分词,数据会作为完整字段进行匹配,可以参与聚合
    
2 Numerical数值类型,分两种:
  基本数据类型:long、interger、short、byte、double、float、half_float
  浮点数的高精度类型:scaled_float 需要指定一个精度因子,比如10或100。elasticsearch会把真实值乘以这个因子后存储,取出时再还原。

3 日期类型: 
  Date elasticsearch可以对日期格式化为字符串存储,但是建议我们存储为毫秒值,存储为long,节省空间。

# 使用示例
PUT /leyou/_mapping
{
  "properties":{
    "title":{
      "type": "text",
      "analyzer": "ik_max_word"
    },
    "images":{
      "type": "keyword",
      "index": "false"
    },
    "price":{
      "type":"float"
    }
  }
}

查看索引库的索引类型

GET /leyou/_mapping

阅读剩余部分...


elasticsearch是什么东西,请自行百度。此处只是记录一下安装所需要操作日志。
0: 安装java环境
0.1.先查看本地是否自带java环境:

yum list installed |grep java

0.2.卸载自带的java(输入su,输入root超级管理员的密码,切换到root用户模式)

yum -y remove java-1.8.0-openjdk* 

yum -y remove tzdata-java*

0.3.查看yum仓库中的java安装包

yum -y list java*

0.4.安装java:

yum -y install java-1.8.0-openjdk*

0.5.查找Java安装路径

which java

ls -lrt /usr/bin/java(也就是上一步查询出来的路径),然后回车

输入ls -lrt /etc/alternatives/java(也就是上一步查询出来的路径),然后回车

从路径中可以看到在jvm目录下,输入cd /usr/lib/jvm,跳转到jvm的目录

输入ls 列出当前目录下的文件和文件夹

0.6.配置Java环境变量

输入vi /etc/profile去编辑环境变量

添加如下:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0
export JRE_HOME=$JAVA_HOME/jre  
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

保存退出

输入source /etc/profile,使配置立即生效

0.7.检查Java安装和配置情况 输入java -version,然后回车

1、创建用户 es(必须)

#使用root用户的操作 添加一个用户,叫做es
useradd es 
# 使用root用户创建目录
mkdir -p /export/servers/es
mkdir -p /export/data/es
mkdir -p /export/logs/es
# 将目录的权限分配给es用户
chown -R es /export/servers/es
chown -R es /export/data/es
chown -R es /export/logs/es
# 设置下es用户的密码,这里建议使用es作为密码,也就是账户名和密码一样。
passwd es
<input es>
# 切换到es用户
su es

2、下载安装包

切换到es用户下,下载安装包
su es
# 进入Home目录
cd 
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.0.tar.gz
tar -zxvf elasticsearch-6.6.0.tar.gz -C /export/servers/es/

3 修改配置文件

cd /export/servers/es/elasticsearch-6.6.0/config
vi elasticsearch.yml
# 追加内容:
xpack.ml.enabled: false
network.host: 0.0.0.0
http.port: 9200
#memory
bootstrap.memory_lock: false 
bootstrap.system_call_filter: false

4、启动

nohup /export/servers/es/elasticsearch-6.6.0/bin/elasticsearch >/dev/null 2>&1 &

5、 查看错误信息-(无报错则忽略)

tail -100f /export/logs/es/myes.log 
ERROR: [1] bootstrap checks failed
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

修改/etc/security/limits.conf在最后追加

* soft nofile 65536
* hard nofile 65536
修改/etc/sysctl.conf在最后追加

vm.max_map_count=655360

保存后,执行:
sysctl -p
重新切换es用户,重启elasticsearch

6、访问es

http://IP:9200

9200.png

使用

1.1 创建索引

curl -XPUT http://ip:9200/blog01/?pretty

1.2 插入文档

curl -XPUT http://ip:9200/blog01/article/1?pretty -d  '{"id": "1", "title": "What is lucene"}' -H "Content-Type: application/json"

1.3 查询文档

curl -XGET "http://ip:9200/blog01/article/1?pretty" -H "Content-Type: application/json"

1.4 更新文档

curl -XPUT http://ip:9200/blog01/article/1?pretty -d  '{"id": "1", "title": " What is elasticsearch"}' -H "Content-Type: application/json"

1.5 搜索文档

curl -XGET "http://ip:9200/blog01/article/1?pretty" -H "Content-Type: application/json"
curl -XGET "http://ip:9200/blog01/article/_search?q=title:'elasticsearch'&pretty" -H "Content-Type: application/json"

1.6 删除文档

curl -XDELETE "http://ip:9200/blog01/article/1?pretty"

1.7 删除索引

curl -XDELETE "http://ip:9200/blog01?pretty"

不常做微信开发,所以流程经常一知半解,要用时才找资料,此处做个笔记记录

1、小程序

小程序设置关注公众号,可作引导小程序用户关注公众号,详情可以看文档
https://developers.weixin.qq.com/miniprogram/dev/component/official-account.html

2、公众号

2.1 公众号基本设置服务器配置,公众号关注事件,接收用户消息都会回传
16.png

2.2 上面通过关注消息可以获得用户openid,但是如果需要获取unionid,还需要设置白名单ip(请求获取unionid的服务器ip)
ip.png

3、开通微信开发平台
https://open.weixin.qq.com/
微信开放平台绑定小程序与公众号,目的是为了让小程序与公众号可获得 unionid
32.png


1 电脑打开软件
2 手机连接wifi与电脑同一网段网络,wifi设置代理到电脑
3 下载安装证书 手机浏览器打开:http://www.charlesproxy.com/getssl
4 设置 代理-SSL代理-启用SSL代理-主机添加* 端口添加443