用golang 实现一个代理池 (2)

}
- ##### server server启动了一个服务器,提供API - ##### storage storage提供了存储相关的interface和实现。go
// github.com\AceDarkkinght\GoProxyCollector\storage\storage.go
type Storage interface {
Exist(string) bool
Get(string) []byte
Delete(string) bool
AddOrUpdate(string, interface{}) error
GetAll() map[string][]byte
Close()
GetRandomOne() (string, []byte)
}
```
目前项目的数据都是存储在boltdb。github上面关于boltdb的简介如下:

Bolt is a pure Go key/value store inspired by Howard Chu's LMDB project. The goal of the project is to provide a simple, fast, and reliable database for projects that don't require a full database server such as Postgres or MySQL.
Since Bolt is meant to be used as such a low-level piece of functionality, simplicity is key. The API will be small and only focus on getting values and setting values. That's it.

考虑到代理池的数据量比较小,而且当初的想法是实现一个开箱即用的代理池,选择boltdb这样的嵌入式数据库显然是比使用MySQL和MongoDB更加简单、便捷。当然,如果以后需要使用不同的数据库时,只需要实现storage的接口即可。使用boltdb的相关文档和教程在我参考的是:

https://segmentfault.com/a/1190000010098668

https://godoc.org/github.com/boltdb/bolt

util util实现了一些通用方法,例如取一个随机的user-agent,具体就不展开了。

verifier

verifier负责验证collector拿到的ip是否可用,可用的入库,不可用的就从数据库中删除。

配置

collector是通过配置文件驱动的。配置文件是:

github.com\AceDarkkinght\GoProxyCollector\collectorConfig.xml

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpgjsg.html