Welcome to Zhijiang TAO's homepage!

Current

I'm just a programmer with more than 6 years' software design and development experience, and I've always been fascinated by C/C++ program language, especially in Linux environment for stable and scalable backend services.

I'm working as a Senior Backend Developer primaryly using C++ and Boost library. The majority business of the company I am working at is 3rd-party payment service, and I am responsible for the Payout System of Settlement Department. In my worktime I have finished the whole system refactoring task successfully, transformed the legacy monster to a new high-performance, more-reliable and maintainable system.

Currently I'm focused on the legacy system analyse and optimization, and new system design and architure tasks.


Skills & Interest

  • Mainly focused on C++ and Boost, hating and despising legacy C++98 while embracing modern C++. In addition to the language rules and characteristics, I am also interested in the related Patterns and Idioms.
  • Working on Backend development all these years, proficient in high-performance async and event-driven model. Experienced in MQ, RPC, Cache, Distributed System, etc.
  • Debug and optimize skills are very important after function development task, but make full use of them is really challenging.
  • Distributed System is so amazing, voting in quantum is fair and democratic, right? I've read many Distributed System related algorithm articles and papers, and implementation source code, hope can be made the best of in the future.

  • Open Source

  • heracles: A retrievable service monitor system
  • Lots of already monitor systems only offer display and alert function, few of them support information retrive API, which I think is very important in feedback-robust system. Some services can take quick measures and actions accordingly when accident happends, if it can get information quickly enough.

    Previously these functions were implimented by meanings of 3th-party shared storage such as Redis, but I think it is really so ugly, inefficient and not elegent, and can not fulfill requirements in all situations (though it was also developed by my hand before). Suffering from pains I get the idea of desired requirements which I think should be implimented, so this project is the result I come out.

    It can be used as light-weight information collection and storage tools. Example, it can be use to record and evalution your service call time information. Perhaps you may use heracles with argus, which is designed for periodic tasks schedule purpose.


  • tzhttpd: High-performance and easy-to-use HTTP service framework
  • The project was developed for the purpose of simulators firstly to satisfy our test requirements. It was developed based on boost.asio, which means high-concurrency and high-performance capacity. It supports HTTP 1.0/1.1 of GET/POST methods handler by regex routing, and can be configured dynamicly without restart the service. It is tiny, simple but I think is very useful, it can be easily integrated into your project. It can be used in many situations such as: HTTP application gateway, HTTP protocal adapter, web manage interface, etc. This framework serves several millions of HTTP request everyday in our production environment.

    Later on, I also add VHost, Cache Control, Compression features, and can be built to run as a simple static webserver.


  • tzrpc: Fast C++ RPC framework based on protobuf and boost::asio
  • This framework is designed and developed for better supporting network client and service development, and is highly used in many other projects, so believe the stability. In fact, Apache Thrift is a nice RPC framework, but building our own RPC framework we are free to do many controls and modifications by ourselves.

    Our tzrpc supports both synchronized and asynchronized client, asynchronized client can increase the throughout intensively. Another advantage need to point out is that asynchronized client makes the design and implementation of distribute-system message exchange simple and intuitive.


  • clotho: ZooKeeper official C client Wrapper for C++
  • Clotho is a C++ wrapper for official ZooKeeper C-style API client library, which can help you better using ZooKeeper-based distribution functions simply and conveniently. It is inspired by our internal editio firstly, but has been fully re-designed and extended again.

    With clotho, we can enjoy service publish and discovery, business configuration updating callback, distributed lock, etc.


  • kan: A Raft implementation based on tzrpc
  • Kan is a Raft consensus algorithm implementation and used for stable KV store situation. The message exchange between nodes is based on tzrpc, and levelDB is used for log, meta data, state machine persistence. The Raft consensus algorithm implementation is almost the same as its author’s original implementation, so we can assume our implementation is right arbitrarily.

    It works fine, and the project page contains the performance statistics. But it doesnot support membership change, and short of multi-Raft which commonly used to increase the performance by means of sharding.


  • rong: A Paxos based consistent KV store
  • Rong is another distributed KV store service, and it's based on Paxos consensus algorithm.

    This project is inspired by keyspace, but has not been finished yet. CUrrently it can only serve by Basic-Paxos without Multi-Paxos optimization, the performance is poor, and the implementation is perhaps buggy!

    It is still in development, stay away from it before it is mature enough.


  • rabbitmq_cpp_wrapper: easy-to-use rabbitmq C++ client wrapper
  • RabbitMQ in C++ is not easy for lacking of official client library, but thanks for alanxz's rabbitmq-c. But rabbitmq-c is too low-level and over-detail-exposed, another work SimpleAmqpClient depends on boost-1.47.0, preventing to be deployed in production environment.

    I add a relatively high-level C++ wrapper for rabbitmq-c, makes it easy and safe to use espicially for newer. It has been tested and deployed in our product environment for a period, it works fine and can be considered stable enough.


    Education

  • Sep, 2010 - Jul, 2013 Sichuan University, M.Eng.
  • Focus on the research of Image and Signal Process(Paper1, Paper2, Paper3). In addition to these academic points,I also studied backend service and large project development related fields, and had internships in Shanghai Bell and Redhat.

  • Sep, 2006 - Jul, 2010 Sichuan University, B.Eng.
  • I undergraduate life, my interest mainly in hardware and embedded system design and implement. At a time, almost all the spare time was put on the Atmel ARM9 chip-level design and manufacture, including Linux porting and apps development. My graduate thesis was an implemention of a health monitor system based on that ARM board I've made before.

    Another thing need to mention was I first heard of Linux in sophomore, and this wonderful thing always with me till now, and will in future. Thanks Linus, I really love it!



     You may also enjoy my other sub-websites list below:
    Blog | Reading

    Copyright © 2015-2019. All Rights Reserved.

    粤ICP备17002382号粤ICP备17002382号