You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
## 架构
Service是业务层, Dao是数据访问层, 这样的分层是基于MVC架构来说的, 分层的主要作用是解耦。
对于Spring这样的框架, ( View\Web) 表示层调用控制层( Controller) , 控制层调用业务层( Service) , 业务层调用数据访问层( Dao) 。
具体起来, Dao的作用是封装对数据库的访问: 增删改查, 不涉及业务逻辑, 只是达到按某个条件获得指定数据的要求;
而Service, 则是专注业务逻辑, 对于其中需要的数据库操作, 都通过Dao去实现;
: DAO = Data Access Object
表示层 ( 也称为UI层)
应用层 (也称为服务层)
业务逻辑层 (也称为域层)
数据访问层 (也称为持久化层)
- [程序员必知的几种软件架构模式 ](https://www.infoq.cn/article/6rx047oohjlrdipd1bc2 )
# Go
## 可比较性
可比较才可以用作map的键。
可比较:
基础类型
指针
不可比较:
slice
map
函数
有时可比较有时不可比较:
接口
结构体 【包含不可比较对象时不可比较】
## Elasticsearch容量规划
分片大小
日志类:单个分片不超过 50G
搜索类:单个分片不超过 20G
先估算总数据量,再根据分片大小,确定分片数。
容量规划
容量规划时要考虑的因素:
机器的软硬件配置
单个文档的尺寸,文档总数,索引大小,分片个数,副本个数
文档写入方式(如 bulk 的单次数据量)
文档的复杂度
文档的读取方式(如,要进行怎样的查询和聚合)
容量规划的步骤:
先进行性能评估:例如每秒写多少,每秒读多少,读单个文档能接受多大延迟。
再观察数据: mapping 的样子,需要什么样的查询和聚合。
两个典型的场景:
搜索:数据增长较慢。
日志:增长快,需要冷热分离,需要自动删除。
硬件配置:
搜索之类的高性能场景,磁盘要 SSD, 磁盘 GB 数/内存 GB 数 = 1/10
日志和并发不高的场景,磁盘可以机械硬盘,磁盘 GB 数/内存 GB 数 = 1/50
单节点的数据量最好 2 TB 之内,最大不超过 5 TB。
JVM 的内存配机器内存的一半,同时 JVM 内存不超过 32 GB。
###
- [结构体的可比较性 ](https://studygolang.com/articles/11342 )